«

»

Eyl
10

Faces Entity (Varlıklar)

Entity Varlık sınıfları Entity sınıfından genişletilir. genellikle import işlemlerini controllerda yaparsınız. aşağıdaki satırların controller da bulunması iyidir.

import("dbf.persistence");
import("models",true);

import fonksiyonun ikinci parametresinin true verilmesi durumda bu fonksiyon uygulamaya dahil edilecek dosyalara application/uygulamaadi/ içerisinede bakar.

Tekrar konumza yani varlık sınıflarına dönelim. varlık sınıflarını veri tabanındaki tablolarınız ile ilişkilendirirken haritalarken annotationları kullanırsınız.

Annotationlar

@Table(name = “blog”) tablo adı tanımlanır class sözcüğün üzerine yazılır
Name : parametresine tablo adı yazılır

@Column(name = “name” ,type = “string”) alan tanımlaması yapılır

Name :niteliğine alan adı yazılır. ilişkili private üyenin üzerine yazılmaldır.
üye private olmalıdır bu önemlidir çünki Faces ORM private üyelere tanır.

@Id birincil anahtarı tanımlar

ilişkisel annotationlar

@OneToOne

@OneToMany

üç paremetreleri bulunur

mappedBy = “Sınıf adı”

pk = ” primary key ”

fk = ” foreign key”

Olayı daha iyi kavrayabilmeniz için örneği inceleyin.

CREATE TABLE `blog` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) default NULL,
`content` text,
PRIMARY KEY  (`id`)
)

Yukarıdaki gibi bir tablomuz olsun.

/**
*  @Table(name = "blog")
*/
class Blog extends Entity
{
/**
@Id
@Column(name = "id" ,type = "integer")
*/

private $id;
/**
@Column(name = "name" ,type = "string")
*/

private $name;
/**
@Column(name = "content" ,type = "text")
*/

private $content;

public function set($name, $value) {
$this->$name= $value;
}

public function get($name) {

return $this->$name;
}
}

Entity sınıfında hangi alanların güncellendiğini tespit etmek için __set ve __get metotları aşırı yüklenmiştir. bu yüzden set ve get metotlarını kullanın

dilerseniz her üye için get ve set metotlarınıda uygulaya bilirsiniz Faces ORM her iki yaklaşımıda benimser.

Varlık siniflarınızı application/uygulamaadi/models/ dizinine yerleştirin
application/uygulamaadi/models/blog.php gibi

Gelelim Controller içerisinden varlık nesnelerimize nasıl erişeceğimize.

import("phpf.controllers.facescontroller");
import("dbf.persistence");
import("models.*",true);//application/models dizini
class BlogController extends FacesController
{

public function  BlogController () {
parent::FacesController();
$blog = new Blog();
$blog->name="Hello World";
$blog->content="Some text";
EntityManager::getInstance()->save($blog);
//EntityManager::getInstance()->delete($blog);
}
}

Yukarıdaki satırlarda yeni bir Blog nesnesi oluşturulur değerler atanır ve son olarak blog nesnesi veri tabanına insert edilir.eğer blog nesnesi new ile kendi oluşturduğumuz bir nesne olmasaydı bu onun update edileceği anlamına gelmekteydi EntityManager::save(Entity) metodu varlık nesnesinin veritabındanmı yoksa yeni bir nesnemi olduğunu algılar ve bu duruma göre ya insert ya da update sözcükleri oluşturup veritabanı sunucusuna gönderir.

Varlık sınıflarını her seferinde elinizle yazmak zorunda değilsiniz. bunun için geliştirdiğim ufak bir java uygulaması var.
http://code.google.com/p/php-faces/downloads/list adresinden generator.zip dosyasını indirin. uygulamayı kullanabilmeniz için sisteminizde java vm nin kurulu olması kafidir. generator programı sizin için varlık sınıflarını oluşturacaktır.

tabiki bu kadar değil bir sonraki yazı EntityManager olacak.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

Bir Cevap Yazın

E-Posta adresiniz yayınlanmayacaktır.


*

Bu HTML etiket ve tanımlayıcılarını kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>