JPA學習筆記(3)——JPA註解

@Entity

@Entity 標註用於實體類聲明語句以前。指出該Java 類爲實體類,將映射到指定的數據庫表java

@Table

當實體類與其映射的數據庫表名不一樣名時需要使用 @Table 標註說明,該標註與 @Entity 標註並列使用,置於實體類聲明語句以前,可寫於單獨語句行。也可與聲明語句同行。數據庫

@Table 標註的常常使用選項是 name。用於指明數據庫的表名markdown

@Table標註另外一個兩個選項 catalog 和 schema 用於設置表所屬的數據庫文件夾或模式,一般爲數據庫名。框架

@Id

@Id 標註用於聲明一個實體類的屬性映射爲數據庫的主鍵列ide

該屬性一般置於屬性聲明語句以前,可與聲明語句同行。也可寫在單獨行上。post

@Id標註也可置於屬性的getter方法以前。fetch

@GeneratedValue

@GeneratedValue 用於標註主鍵的生成策略,經過 strategy 屬性指定。默認狀況下,JPA 本身主動選擇一個最適合底層數據庫的主鍵生成策略:SqlServer 相應 identity,MySQL 相應 auto increment。ci

在 javax.persistence.GenerationType 中定義了下面幾種可供選擇的策略:rem

  1. IDENTITY:採用數據庫 ID自增加的方式來自增主鍵字段,Oracle 不支持這樣的方式。get

  2. AUTO: JPA本身主動選擇合適的策略。是默認選項。

  3. SEQUENCE:經過序列產生主鍵,經過 @SequenceGenerator 註解指定序列名,MySql 不支持這樣的方式

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

@Basic

@Basic 表示一個簡單的屬性到數據庫表的字段的映射,對於沒有不論什麼標註的 getXxxx() 方法,默認即爲@Basic

fetch: 表示該屬性的讀取策略,有 EAGER 和 LAZY 兩種,分別表示主支抓取和延遲載入,默以爲 EAGER.

optional:表示該屬性是否贊成爲null, 默以爲true

@Column

當實體的屬性與其映射的數據庫表的列不一樣名時需要使用

@Column 標註說明。該屬性一般置於實體的屬性聲明語句以前,還可與 @Id 標註一塊兒使用。

@Column 標註的常常使用屬性是 name,用於設置映射數據庫表的列名。此外。該標註還包括其餘多個屬性,如:unique 、nullable、length 等。

@Column 標註的 columnDefinition 屬性: 表示該字段在數據庫中的實際類型.一般 ORM 框架可以依據屬性類型本身主動推斷數據庫中字段的類型,但是對於Date類型仍沒法肯定數據庫中字段類型究竟是DATE,TIME仍是TIMESTAMP.此外,String的默認映射類型爲VARCHAR, 假設要將 String 類型映射到特定數據庫的 BLOB 或TEXT 字段類型.

@Column標註也可置於屬性的getter方法以前

@Transient

表示該屬性並非一個到數據庫表的字段的映射,ORM框架將忽略該屬性.

假設一個屬性並非數據庫表的字段映射,就務必將其標示爲@Transient,不然,ORM框架默認其註解爲@Basic

@Temporal

在覈心的 Java API 中並未定義 Date 類型的精度(temporal precision). 而在數據庫中,表示 Date 類型的數據有 DATE, TIME, 和 TIMESTAMP 三種精度(即單純的日期,時間,或者二者 兼備). 在進行屬性映射時可以使用@Temporal註解來調整精度.

PS:以上內容參考@尚硅谷的PPT

相關文章
相關標籤/搜索