Hibernate註解(一)之持久化實體
1. 建立POJO作為持久化實體
每個持久化POJO類都是一個實體,並使用 @Entity註解(在類級別)宣告:
@Entity
public class Flight implements Serializable {
Long id;
@Id
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
}
@Entity將該類宣告為一個實體(即一個持久的POJO類),@Id宣告該實體的識別符號屬性。其他對映宣告是隱式的。類Flight被對映到Flight表,使用列ID作為其主鍵列。
根據是否註釋欄位或方法,Hibernate使用的訪問型別將為field或 property。EJB3規範要求您對將要訪問的元素型別宣告註釋,例如,如果使用property訪問許可權,則使用getter方法;如果使用訪問許可權,則使用該欄位field。應該避免在兩個欄位和方法中混合註釋。Hibernate會從@Idor 的位置猜測訪問型別@EmbeddedId。
1.1. 定義表格
@Table被設定在課堂級別; 它允許您為實體對映定義表,目錄和模式名稱。如果no @Table定義,則使用預設值:實體的非限定類名稱。
@ Entity
@ Table (name = “tbl_sky” )
public class Sky implements Serializable { ... }
該@Table元素包含一個 schema和catalog屬性,如果它們需要被定義。您還可以使用@UniqueConstraint註釋連同@Table(為了繫結到單個列的唯一約束,建議使用該 @Column.unique方法(參考以@Column獲取更多資訊))來 為表定義唯一約束。
@ Table (name = “tbl_sky” ,
uniqueConstraints = { @ UniqueConstraint (columnNames = { “month” ,“day” })} )
一個唯一的約束被應用到元組month,day。請注意該columnNames陣列引用邏輯列名稱。邏輯列名由Hibernate NamingStrategy實現定義 。預設的JPA命名策略使用物理列名稱作為邏輯列名,但如果您使用自定義NamingStrategy 實現將fld_附加到所有列中,它可能會有所不同。請注意,當明確設定列名稱時,邏輯列名稱不一定等於屬性名稱esp。除非你重寫NamingStrategy,否則你不應該擔心。
1.2. 版本控制樂觀鎖定
您可以使用@Version註釋向實體新增樂觀鎖定功能 :
@Entity
public class Flight implements Serializable {
...
@Version
@Column(name="OPTLOCK")
public Integer getVersion() { ... }
}
版本屬性將被對映到 OPTLOCK列,實體管理器將使用它來檢測衝突更新(防止丟失的更新,否則您可能會看到上次提交 - 贏取策略)。
版本列可以是數字(推薦的解決方案)或時間戳。Hibernate支援任何種類的型別,只要你定義並實現適當的 UserVersionType。
應用程式不得以任何方式更改由Hibernate設定的版本號。要人為增加版本號,請檢視Hibernate Entity Manager的參考文件 LockModeType.OPTIMISTIC_FORCE_INCREMENT或 LockModeType.PESSIMISTIC_FORCE_INCREMENT。
相關文章
- 轉JPA實體註解與hibernate主鍵生成策略
- Hibernate 持久化物件的狀態持久化物件
- Hibernate持久化物件的狀態持久化物件
- Redis 持久化之 AOF 配置詳解Redis持久化
- redis 之 持久化Redis持久化
- Redis之持久化Redis持久化
- 基於hibernate-validator實體欄位唯一性檢查 ,UniqueKey註解
- 【Zookeeper】原始碼分析之持久化(一)之FileTxnLog原始碼持久化
- 【Redis】Redis 持久化之 RDB 與 AOF 詳解Redis持久化
- Redis 持久化之 AOFRedis持久化
- redis持久化之AOFRedis持久化
- OpenCV持久化(一)OpenCV持久化
- Hibernate中@Struct註解型別Struct型別
- Redis 持久化詳解Redis持久化
- Redis持久化之RDB & AOFRedis持久化
- redis之 Redis持久化配置Redis持久化
- Docker之 資料持久化Docker持久化
- 畫江湖之 Redis持久化Redis持久化
- 資料治理一體化實踐之體系化建模
- 春夏秋冬又一春之Redis持久化Redis持久化
- NServiceBus翻譯之持久化技術(一):Persistence In NServiceBus持久化
- redis-16.持久化之RDBRedis持久化
- redis-17.持久化之AOFRedis持久化
- Redis 持久化之RDB和AOFRedis持久化
- 10. Redis持久化之AOFRedis持久化
- Redis資料持久化—RDB持久化與AOF持久化Redis持久化
- Redis 持久化儲存詳解Redis持久化
- 詳解 ZooKeeper 資料持久化持久化
- Redis-11-持久化詳解Redis持久化
- 【Zookeeper】原始碼分析之持久化(二)之FileSnap原始碼持久化
- hibernate詳解一
- Redis 必知必會之持久化Redis持久化
- 5-Redis 的持久化之 RDBRedis持久化
- Sentinel 實戰-規則持久化持久化
- Kafka實戰-資料持久化Kafka持久化
- webpack 持久化快取實踐Web持久化快取
- Redis持久化——記憶體快照(RDB)Redis持久化記憶體
- 二. 重識Java之夯實註解Java