學Hibernate記的一點筆記

7.1.1 單向一對一 Book-Author
 1) 使用@JoinColumn注釋
 在Book的author屬性的getAuthor方法上
 @OneToOne(casecade=CasecadeType.ALL)
 @JoinColumn(name="author_oid")//name屬性定義Book表格的外鍵列名
 
 @JoingColumn是Hibernate默認採用的映射策略 如果不顯式使用的話
 Hibernate將使用額外外鍵列(默認的外鍵列名為AUTHOR_OID 即目標類名+'_'+目標類主鍵列名)

 2)使用@PrimaryKeyJoinColumn注釋
 用相等的主鍵來建立關聯,不需要額外的外鍵列
 在Book的author屬性的getAuthor方法上
 @OneToOne(casecade=CasecadeType.ALL)
 @PrimaryKeyJoinColumn
 
 3)使用級聯
 CasecadeType.ALL    主類對象的任何持久化操作都會同樣作用在目標類上
 CasecadeType.PERSIST  主類對象被持久化時 子類對象也同樣
 CasecadeType.MERGE   更新已經持久化的主類對象時子類也同樣
 CasecadeType.REMOVE   刪除...........
 CasecadeType.REFRESH  刷新....

7.1.2 雙向一對一
 兩個表格是完全對等的,每個類都可以作為級聯的主動方
 這時候就需要使用@OneToOne注釋的mappedBy屬性,
 明確告訴Hibernate在映射的時候哪個表格應該作為主動方擁有關聯列
 
 Book-Author  Book為主動類
 在Author的Book屬性的getBook方法上
 @OneToOne(mappedBy="author")
 
 mappedBy屬性設置在 目標類中指向主動類的屬性上 author用book屬性指向Book
 它的值等於主動類中指向目標類的屬性名  author是主動類book指向目標類的屬性名
 
 如果衹有@OneToOne沒有 mappedBy屬性 Hibernate會在兩個表中都加一個關聯外鍵(指向對方主鍵的外鍵)
 
7.1.3 單向多對一
 Book(*)-(1)Author
 Author無法直接獲取與他關聯的Book對象
 多個Book對象可以同時指向一個Author
 在Book的author屬性的getAuthor方法上
 @ManyToOne(cascade=CascadeType.ALL)
 #JoinColumn(name="author_oid")
 
7.1.4 單向一對多
 Book(1)-(*)Author
 在book的List<Author>屬性的getAuthors方法上
 @OneToMany(cascade=CascadeType.ALL)
 @JoinColumn(name="book_oid")//注意是book_id而不是author_id
 
 @OneToManyde fetch默認是LAZY
 當getAuthors返回的不是泛型 (List 而不是 List<Author>)
 需要再加一個屬性
 @OneToMany(targetEntity=Author.class,cascade=CascadeType.ALL)
 
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值