JPA註解

1. @Entity :修飾實體類,指明該類將映射到指定的數據表,例如:Customer 類默認的數據表名爲 customer

2. @Table :實體類與映射的數據庫表名不同名時需要使用 @Table 註解,該註解與 @Entity 註解並列使用,使用其 name 屬性指明數據庫的表名

 1 @Table(name = "JPA_CUSTOMER")
 2 @Entity 3 public class Customer {

3. @Id :標識該屬性爲主鍵一般標註在該屬性的 getter 方法上

4. @GeneratedValue :標註主鍵的生成策略,通過其 strategy 屬性。通常與 @Id 註解一起使用。默認情況下 JPA 會自動選擇一個最適合底層數據庫的主鍵生成策略,MySQL 默認爲 AUTO,常用策略有:

–IDENTITY:採用數據庫 ID自增長的方式來自增主鍵字段,Oracle 不支持這種方式;

AUTO: JPA自動選擇合適的策略,是默認選項

–SEQUENCE:通過序列產生主鍵,通過 @SequenceGenerator 註解指定序列名,MySql 不支持這種方式

–TABLE:通過表產生主鍵,框架藉由表模擬序列產生主鍵,使用該策略可以使應用更易於數據庫移植

5. @Basic :用於沒有任何標註的 getXxx() 方法,默認即爲 @Basic,所以若一個 getter 方法無任何註解,可以使用 @Basic 註解,也可以不使用

6. @Column :當實體的屬性與其映射的數據表的列不同名時使用,一般用於 getter 方法上。其 name 屬性用來指明此屬性在數據表中對應的列名unique 屬性指明是否爲唯一約束nullable 屬性用來指明是否可以爲空,false 爲不能爲空length 屬性指明此列的長度

 

7. @Transient :標註此註解後在創建數據表的時候將會忽略該屬性  Customer 類並沒有 info 這個屬性,所以數據庫中也不應該有 info 這個字段

8. @Temporal :向數據庫映射日期(Date)屬性時用來調整映射的精度。Date 類型的數據有 DATE, TIME, 和 TIMESTAMP 三種精度(即單純的日期,時間,或者兩者兼備).

Birth 屬性應該使用 DATE 類型(生日只具體到日即可,如:2015-10-22),而 CreateTime 應該使用 TIMESTAMP 類型(創建時間應該具體到秒,如:2017-10-11 22:39:13)

補衝:使用 TABLE 生成主鍵詳解

1.創建一個數據表 jpa_id_generators,並添加幾條數據

 

2. 配置使用 TABLE 主鍵生成策略

複製代碼

 1    //使用 TABLE 主鍵生成策略 2     @TableGenerator(name="ID_GENERATOR", //該主鍵生成策略的名稱,與 @GeneratedValue 的 generator 屬性值對應 3     table="jpa_id_generators", // 指明根據哪個表生成主鍵 4     pkColumnName="PK_NAME", // 使用 pkColumnName pkColumnValue valueColumnName 三個屬性唯一的定位一個點 5     pkColumnValue="CUSTOMER_ID", 6     valueColumnName="PK_VALUE", 7     allocationSize=100) //指定每次增加的數量 8     @GeneratedValue(strategy=GenerationType.TABLE, generator="ID_GENERATOR") 9     @Id10     public Integer getId() {11         return id;12     }

複製代碼

附一張表說明:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章