您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 >
Hibernate 3注釋簡(jiǎn)介
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/2/18 14:18:37 ] 推薦標(biāo)簽:

10、@OneToMany(fetch=FetchType,cascade=CascadeType)
可選
@OneToMany描述一個(gè)一對(duì)多的關(guān)聯(lián),該屬性應(yīng)該為集體類(lèi)型,在數(shù)據(jù)庫(kù)中并沒(méi)有實(shí)際字段.
fetch:表示抓取策略,默認(rèn)為FetchType.LAZY,因?yàn)殛P(guān)聯(lián)的多個(gè)對(duì)象通常不必從數(shù)據(jù)庫(kù)預(yù)先讀取到內(nèi)存
cascade:表示級(jí)聯(lián)操作策略,對(duì)于OneToMany類(lèi)型的關(guān)聯(lián)非常重要,通常該實(shí)體更新或刪除時(shí),其關(guān)聯(lián)的實(shí)體也應(yīng)當(dāng)被更新或刪除
例如:實(shí)體User和Order是OneToMany的關(guān)系,則實(shí)體User被刪除時(shí),其關(guān)聯(lián)的實(shí)體Order也應(yīng)該被全部刪除
示例:
    @OneTyMany(cascade=ALL)
    public List getOrders() {
       return orders;
    }

11、@OneToOne(fetch=FetchType,cascade=CascadeType)
可選
@OneToOne描述一個(gè)一對(duì)一的關(guān)聯(lián)
fetch:表示抓取策略,默認(rèn)為FetchType.LAZY
cascade:表示級(jí)聯(lián)操作策略
示例:
    @OneToOne(fetch=FetchType.LAZY)
    public Blog getBlog() {
       return blog;
    }

12、@ManyToMany
可選
@ManyToMany 描述一個(gè)多對(duì)多的關(guān)聯(lián).多對(duì)多關(guān)聯(lián)上是兩個(gè)一對(duì)多關(guān)聯(lián),但是在ManyToMany描述中,中間表是由ORM框架自動(dòng)處理
targetEntity:表示多對(duì)多關(guān)聯(lián)的另一個(gè)實(shí)體類(lèi)的全名,例如:package.Book.class
mappedBy:表示多對(duì)多關(guān)聯(lián)的另一個(gè)實(shí)體類(lèi)的對(duì)應(yīng)集合屬性名稱
示例:
    User實(shí)體表示用戶,Book實(shí)體表示書(shū)籍,為了描述用戶收藏的書(shū)籍,可以在User和Book之間建立ManyToMany關(guān)聯(lián)
    @Entity
    public class User {
       private List books;
       @ManyToMany(targetEntity=package.Book.class)
       public List getBooks() {
           return books;
       }
       public void setBooks(List books) {
           this.books=books;
       }
    }
 
    @Entity
    public class Book {
       private List users;
       @ManyToMany(targetEntity=package.Users.class, mappedBy="books")
       public List getUsers() {
           return users;
       }
       public void setUsers(List users) {
           this.users=users;
       }
    }
兩個(gè)實(shí)體間相互關(guān)聯(lián)的屬性必須標(biāo)記為@ManyToMany,并相互指定targetEntity屬性,
需要注意的是,有且只有一個(gè)實(shí)體的@ManyToMany注解需要指定mappedBy屬性,指向targetEntity的集合屬性名稱
利用ORM工具自動(dòng)生成的表除了User和Book表外,還自動(dòng)生成了一個(gè)User_Book表,用于實(shí)現(xiàn)多對(duì)多關(guān)聯(lián)

13、@MappedSuperclass
可選
@MappedSuperclass可以將超類(lèi)的JPA注解傳遞給子類(lèi),使子類(lèi)能夠繼承超類(lèi)的JPA注解
示例:
    @MappedSuperclass
    public class Employee() {
       ....
    }
 
    @Entity
    public class Engineer extends Employee {
       .....
    }
    @Entity
    public class Manager extends Employee {
       .....
    }

14、@Embedded
可選
@Embedded將幾個(gè)字段組合成一個(gè)類(lèi),并作為整個(gè)Entity的一個(gè)屬性.
例如User包括id,name,city,street,zip屬性.
我們希望city,street,zip屬性映射為Address對(duì)象.這樣,User對(duì)象將具有id,name和address這三個(gè)屬性.
Address對(duì)象必須定義為@Embededable
示例:
    @Embeddable
    public class Address {city,street,zip}
    @Entity
    public class User {
       @Embedded
       public Address getAddress() {
           ..........
       }
    }

上一頁(yè)1234下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd