# Annotation ###### tags: `JPA` `Spring` `Java` **@Entity** : 將Java類標示為實體類,將會對應到資料庫 **@Table** : 可指定與Java類不同名的table、catalog、schema **@Id** : 主鍵 **@GeneratedValue** : 標示主鍵生成策略 1. IDENTITY:自動增長 ( oracle不支援 2. AUTO:JPA自動根據資料庫決定策略 3. SEQYENCE:通過序列產生 透過@SequenceGenerator指定序列 ( ps Mysql不支援 4. TABLE:通過表產生主鍵,框架藉由模擬序列產生主鍵使用該策略可以使應用更易於資料移植。 **@Basic** : 表示一個簡單屬性到資料庫屬性的對應,一個沒有任何註釋的getXXX()預設就是@Basic **@Column** : 可以比Basic更精確的指定資料庫欄位,例如length、欄位名稱、nullable。另外還有一個屬性是columnDefinitaion,通常ORM框架會自動判斷類型但對於Date無法確定是Date,Time還是TimeStamp此外String預設是Varchar,如果要映射到clob或text時可使用。 **@Transient** : 標示為不需要映射到資料庫 **@Temporal** : 用調整日期的精度 TemporalType.(DATE、TIME、TIMESTAMP) --- @GeneratedValue(strategy=GenerationType.Table....) 事例 @TableGenerator(name="ID_GenerAtor", table="jpa_id_generator",//實際的Table pkColumnName="PK_NAME", pkColumnValue="CUSTOMER_ID", valueColumnName="PK_VALUE", allocationSize=2//每次跳幾步 ) @GeneratedValue(strategy=GenerationType.Table,generator="ID_GenerAtor") Table.jpa_id_generator col ID PK_NAME PK_VALUE row 1 CUSTOMER_ID 1 ---