正對不同的數據庫可以同時使用
@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() {
}
建議在一多對關聯中在"一"方用延遲加載"多"方
可以在HQL中顯式的"迫切左外連接" left join fetch
這樣做Hibernate可以少訪問數據庫,也可以用"@BatchSize(size = 5)"來減少訪問數據庫的次數