註解名
功能@entity
使乙個類成為實體類,將對映到指定的資料庫表
例如如果註解到實體類customer上,將會對映到customer表上
@table(name=「jpa_customers」)
實體類與其對映的資料庫表名預設一樣的,使用這個註解可以自定義類對應的表的名字。
例如左邊這個註解就是將表名改為了jpa_customers
需要和@entity註解並列使用
@id宣告乙個實體類的屬性為資料庫的主鍵列
要加到get方法上
@generatedvalue
通過註解的strategy屬性指定主鍵的生成策略,
mysql對應的是autoincrement
@column
實體的屬性與其對映的資料庫表的列不同名時使用
@transient
實體類中的方法我們都是缺省會在資料庫中新增欄位的,如果不希望自動新增該欄位的話,可以在方法上方新增該註解
@temporal
調整時間型別引數的時間精度,
有date、time、timestamp三種精度
一些例子:
@column
(name=
"person_id"
,length=
10,nullable=
false
)@generatedvalue
(strategy=generationtype.auto)
@idpublic integer getpersonid()
首先類的屬性personid在資料庫中欄位名為"person_id",字段長度為10,不可為空
然後這個屬性是表的主鍵列(@id)
最後這個主鍵列的生成策略是auto increment
// 工具方法,不需要對映為表的乙個字段
@transient
public string getinfo()
這裡的getinfo()方法是或者實體的一些資訊,但是只要是在實體類中的方法,jpa都會嘗試將屬性加入到資料庫表中乙個欄位中去。如果該方法上方不新增transient註解,則資料庫會存在"info"欄位的資料,或者執行時直接報錯。加了@transient之後,getinfo()就只是乙個普通的方法了。
@temporal
(temporaltype.date)
public date getbirth()
@temporal
(temporaltype.timestamp)
public date getcreatedtime()
上面兩個方法是獲得使用者的生日和當前的乙個時間點。如果不新增註解@temporal,兩個日期都會精確到年月日小時分鐘秒,但是在getbirth()這個方法上方加上註解@temporal(temporaltype.date)
後,獲得的日期就只會精確到年月日,不會到小時分秒。 JPA註解補充
fetchtype.lazy和 fetchtype.eager 什麼區別?1 fetchtype.lazy 懶載入,載入乙個實體時,定義懶載入的屬性不會馬上從資料庫中載入。2 fetchtype.eager 急載入,載入乙個實體時,定義急載入的屬性會立即從資料庫中載入。3 比方 user 類有兩個屬...
JPA註解查詢
1 entity name entityname 必須,name為可選,對應資料庫中一的個表 entity 標識這個pojo是乙個jpa實體 public class users implements serializable 2 table name catalog schema 可選,通常和 e...
JPA實體註解
entity name entityname 必須,name為可選,對應資料庫中一的個表 table name catalog schema 可選,通常和 entity配合使用,只能標註在實體的class定義處,表示實體對應的資料庫表的資訊 name 可選,表示表的名稱。預設地,表名和實體名稱一致,...