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。
相關文章
- Hibernate 註解方式
- 基於hibernate-validator實體欄位唯一性檢查 ,UniqueKey註解
- Hibernate中@Struct註解型別Struct型別
- Redis 持久化之 AOF 配置詳解Redis持久化
- redis 之 持久化Redis持久化
- hibernate詳解一
- 【Redis】Redis 持久化之 RDB 與 AOF 詳解Redis持久化
- Redis 持久化之 AOFRedis持久化
- Redis 持久化詳解Redis持久化
- Docker之 資料持久化Docker持久化
- redis之 Redis持久化配置Redis持久化
- Redis持久化之RDB & AOFRedis持久化
- 畫江湖之 Redis持久化Redis持久化
- 春夏秋冬又一春之Redis持久化Redis持久化
- 資料治理一體化實踐之體系化建模
- Kubernetes 持久化儲存之 NFS 終極實戰指南持久化NFS
- 10. Redis持久化之AOFRedis持久化
- Redis 持久化之RDB和AOFRedis持久化
- redis-16.持久化之RDBRedis持久化
- redis-17.持久化之AOFRedis持久化
- kubernetes資料持久化PV-PVC詳解(一)持久化
- 手寫 Hibernate ORM 框架 01-註解常量定義ORM框架
- Redis資料持久化—RDB持久化與AOF持久化Redis持久化
- Android進階——Java註解實戰之APT構建模組化的第一步AndroidJavaAPT
- hibernate不同實體不同填充建立人
- Redis 持久化儲存詳解Redis持久化
- Redis-11-持久化詳解Redis持久化
- 詳解 ZooKeeper 資料持久化持久化
- Redis 必知必會之持久化Redis持久化
- 5-Redis 的持久化之 RDBRedis持久化
- 二. 重識Java之夯實註解Java
- [動圖演示]Redis 持久化 RDB/AOF 詳解與實踐Redis持久化
- Sentinel 實戰-規則持久化持久化
- Redis持久化——記憶體快照(RDB)Redis持久化記憶體
- Spring Boot系列十八 Spring AOP + 註解實現統一註解Spring Boot
- 應用PMDK修改WAL操作使之適配持久化記憶體持久化記憶體
- hibernate詳解
- Hibernate/JPA中如何合併實體集合?