亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

單向和雙向JPA和Hibernate關聯之間有什么區別?

單向和雙向JPA和Hibernate關聯之間有什么區別?

精慕HU 2019-12-07 15:04:15
單向關聯和雙向關聯有什么區別?由于在數據庫中生成的表都是相同的,所以我發現的唯一區別是雙向關聯的每一側都有一個引用,而單向則沒有。這是單向關聯public class User {    private int     id;    private String  name;    @ManyToOne    @JoinColumn(            name = "groupId")    private Group   group;}public class Group {    private int     id;    private String  name;}雙向關聯public class User {    private int     id;    private String  name;    @ManyToOne    @JoinColumn(            name = "groupId")    private Group   group;}public class Group {    private int         id;    private String      name;    @OneToMany(mappedBy="group")    private List<User>  users;}區別在于該組是否持有用戶的參考。所以我想知道這是否是唯一的區別?哪個推薦?java hibernate jpa orm 關聯
查看完整描述

3 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

有兩個主要區別。

訪問關聯方

第一個與您如何訪問關系有關。對于單向關聯,您只能從一端導航關聯。

因此,對于單向@ManyToOne關聯,這意味著您只能從外鍵所在的子端訪問該關系。

如果您具有單向@OneToMany關聯,則意味著您只能從外鍵所在的父側訪問該關系。

對于雙向@OneToMany關聯,您可以通過兩種方式從父方或子方導航關聯。

您還需要對雙向關聯使用添加/刪除實用程序方法,以確保雙方正確同步。

性能

第二方面與性能有關。

  1. 因為@OneToMany,單向關聯的效果不如雙向關聯。

  2. 對于@OneToOne,雙向關聯,將導致母公司要獲取熱切如果Hibernate無法告訴代理是否應該分配或空值。

  3. 因為@ManyToMany,集合類型的Sets表現優于集合,產生了很大的變化Lists。


查看完整回答
反對 回復 2019-12-07
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

在編碼方面,雙向關系的實現更加復雜,因為根據JPA規范5(第42頁),應用程序負責使雙方保持同步。不幸的是,規范中給出的示例沒有提供更多細節,因此也沒有給出復雜程度的概念。

當不使用二級緩存時,正確執行關系方法通常不是問題,因為在事務結束時實例將被丟棄。

使用二級緩存時,如果由于錯誤實施的關系處理方法而導致任何內容損壞,這意味著其他事務也將看到損壞的元素(二級緩存是全局的)。

正確實現的雙向關系可以使查詢和代碼更簡單,但如果就業務邏輯而言確實沒有意義,則不應使用。


查看完整回答
反對 回復 2019-12-07
  • 3 回答
  • 0 關注
  • 573 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號