hibernate Mysql 自增長 註解配置,表無關聯的註解方式關聯查詢

不同數據庫 自增長ID配置

正對不同的數據庫可以同時使用
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
2 針對mysql
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
3 針對oracle
       @Id
       @GeneratedValue(strategy = GenerationType.SEQUENCE,generator="s_gen")
       @SequenceGenerator(name="s_gen",sequenceName="s_seq")


無關聯表 關聯查詢配置

1、FetchType.LAZY:懶加載,加載一個實體時,定義懶加載的屬性不會馬上從數據庫中加載。

2、FetchType.EAGER:急加載,加載一個實體時,定義急加載的屬性會立即從數據庫中加載。

3、比方User類有兩個屬性,name跟address,就像百度知道,登錄後用戶名是需要顯示出來的,此屬性用到的機率極大,要馬上到數據庫查,用急加載;而用戶地址大多數情況下不需要顯示出來,只有在查看用戶資料是才需要顯示,需要用了才查數據庫,用懶加載就好了。所以,並不是一登錄就把用戶的所有資料都加載到對象中,於是有了這兩種加載模式。

name 是當前實體 屬性   referencedColumnName 是與之關聯的實體 屬性

fetch=FetchType.LAZY)延遲加載關聯表 不要亂用 有時候要爆胎

  @ManyToOne(targetEntity=UnitOrganizations.class,fetch=FetchType.LAZY)

    @JoinColumn(name="org_Id",referencedColumnName="id",updatable=false,insertable=false)

  public UnitOrganizations getOrganizations() {

    return organizations;

    }


建議在一多對關聯中在"一"方用延遲加載"多"方

可以在HQL中顯式的"迫切左外連接" left join fetch
這樣做Hibernate可以少訪問數據庫,也可以用"@BatchSize(size = 5)"來減少訪問數據庫的次數


發佈了38 篇原創文章 · 獲贊 1 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章