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

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

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

12、@ManyToMany
可選
@ManyToMany 描述一個多對多的關(guān)聯(lián).多對多關(guān)聯(lián)上是兩個一對多關(guān)聯(lián),但是在ManyToMany描述中,中間表是由ORM框架自動處理
targetEntity:表示多對多關(guān)聯(lián)的另一個實體類的全名,例如:package.Book.class
mappedBy:表示多對多關(guān)聯(lián)的另一個實體類的對應(yīng)集合屬性名稱
示例:
    User實體表示用戶,Book實體表示書籍,為了描述用戶收藏的書籍,可以在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;
       }
    }
兩個實體間相互關(guān)聯(lián)的屬性必須標記為@ManyToMany,并相互指定targetEntity屬性,
需要注意的是,有且只有一個實體的@ManyToMany注解需要指定mappedBy屬性,指向targetEntity的集合屬性名稱
利用ORM工具自動生成的表除了User和Book表外,還自動生成了一個User_Book表,用于實現(xiàn)多對多關(guān)聯(lián)

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

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

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