Hibernate學(xué)習(xí)(映射持久化類(lèi))
第一個(gè)實(shí)體類(lèi)的映射
@Entity
@Table(name = "t_item")
public class Item {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
public Long getId() {
return id;
}
}
這是一個(gè)最基礎(chǔ)的實(shí)體類(lèi),使用@Entity 注解標(biāo)記為"可持久化",并且?guī)в幸粋€(gè)用于數(shù)據(jù)庫(kù)標(biāo)識(shí)符屬性@Id映射.@Table 注解重寫(xiě)JPA 默認(rèn)表名為"t_item"
配置鍵生成器
當(dāng)保存實(shí)體實(shí)例時(shí),通常你會(huì)希望系統(tǒng)生成一個(gè)主鍵值,因此你會(huì)在@Id旁邊編寫(xiě)@GeneratedValue注解,JPA使用javax.persistence.GenerationType枚舉標(biāo)準(zhǔn)化集中值生成策略,可以使用@GeneratedValue(strategy =...)進(jìn)行選擇:
- GenerationType.AUTO Hibernate會(huì)選擇一種合適的策略,詢(xún)問(wèn)你已配置數(shù)據(jù)庫(kù)的那種SQL方言是最佳的,默認(rèn)值.
- GenerationType.SEQUENCE HIbernate 預(yù)期(并且會(huì)創(chuàng)建,如果使用工具的話(huà))你的數(shù)據(jù)庫(kù)中存在一個(gè)名為HIBERNATE_SEQUENCE的序列,該序列會(huì)在每個(gè)INSERT之前被單獨(dú)調(diào)用,已生成順序數(shù)字值.
- GenerationType.IDENTITY Hibernate預(yù)期(并且會(huì)在表DDL中創(chuàng)建)一個(gè)特殊的自增長(zhǎng)主鍵列,該列會(huì)在數(shù)據(jù)庫(kù)INSERT時(shí)自動(dòng)生成一個(gè)數(shù)字值.
- GenerationType.TABLE HIbernate將在您的數(shù)據(jù)庫(kù)架構(gòu)中使用一個(gè)額外的表,這個(gè)表會(huì)保存下一個(gè)數(shù)字主鍵值,每行對(duì)應(yīng)一個(gè)實(shí)體類(lèi),在INSERT之前.該表將被讀取并做相應(yīng)的更新.