jpa 資料庫對映註解介紹

2021-07-03 03:41:42 字數 4164 閱讀 7248

1、@entity(name="entityname")

必須,name為可選,對應資料庫中一的個表

2、@table(name="",catalog="",schema="")

可選,通常和@entity配合使用,只能標註在實體的class定義處,表示實體對應的資料庫表的資訊

name:可選,表示表的名稱.預設地,表名和實體名稱一致,只有在不一致的情況下才需要指定表名

catalog:可選,表示catalog名稱,預設為catalog("").

schema:可選,表示schema名稱,預設為schema("").

3、@id

必須@id定義了對映到資料庫表的主鍵的屬性,乙個實體只能有乙個屬性被對映為主鍵.置於get***x()前.

4、@generatedvalue(strategy=generationtype,generator="")

可選strategy:表示主鍵生成策略,有auto,indentity,sequence 和 table 4種,分別表示讓orm框架自動選擇,

根據資料庫的identity欄位生成,根據資料庫表的sequence欄位生成,以有根據乙個額外的表生成主鍵,預設為auto

generator:表示主鍵生成器的名稱,這個屬性通常和orm框架相關,例如,hibernate可以指定uuid等主鍵生成方式.

示例:@id

@generatedvalues(strategy=strategytype.sequence)

public int getpk()

5、@basic(fetch=fetchtype,optional=true)

可選@basic表示乙個簡單的屬性到資料庫表的字段的對映,對於沒有任何標註的get***x()方法,預設即為@basic

fetch: 表示該屬性的讀取策略,有eager和lazy兩種,分別表示主支抓取和延遲載入,預設為eager.

optional:表示該屬性是否允許為null,預設為true

示例:@basic(optional=false)

public string getaddress()

6、@column

可選@column描述了資料庫表中該字段的詳細定義,這對於根據jpa註解生成資料庫表結構的工具非常有作用.

name:表示資料庫表中該字段的名稱,預設情形屬性名稱一致

nullable:表示該欄位是否允許為null,預設為true

unique:表示該欄位是否是唯一標識,預設為false

length:表示該字段的大小,僅對string型別的字段有效

insertable:表示在orm框架執行插入操作時,該欄位是否應出現insetrt語句中,預設為true

updateable:表示在orm框架執行更新操作時,該欄位是否應該出現在update語句中,預設為true.對於一經建立就不可以更改的字段,該屬性非常有用,如對於birthday欄位.

columndefinition:表示該字段在資料庫中的實際型別.通常orm框架可以根據屬性型別自動判斷資料庫中字段的型別,但是對於date型別仍無法確定資料庫中欄位型別究竟是date,time還是timestamp.此外,string的預設對映型別為varchar,如果要將string型別對映到特定資料庫的blob或text欄位型別,該屬性非常有用.

secondarytable: 從表名。如果此列不建在主表上(預設建在主表),該屬性定義該列所在從表的名字。

示例:@column(name="birth",nullable="false",columndefinition="date")

public string getbithday()

@column(name = "user_code", nullable = false, length=32)//設定屬性usercode對應的字段為user_code,長度為32,非空    

private string usercode;    

@column(name = "user_wages", nullable = true, precision=12, scale=2)//設定屬性wages對應的字段為user_wages,12位數字可保留兩位小數,可以為空    

private double wages;    

@temporal(temporaltype.date)//設定為時間型別    

private date joindate; 

7、@transient

可選@transient表示該屬性並非乙個到資料庫表的字段的對映,orm框架將忽略該屬性.

如果乙個屬性並非資料庫表的字段對映,就務必將其標示為@transient,否則,orm框架預設其註解為@basic

示例://根據birth計算出age屬性

@transient

public int getage()

8、@manytoone(fetch=fetchtype,cascade=cascadetype)

可選@manytoone表示乙個多對一的對映,該註解標註的屬性通常是資料庫表的外來鍵

optional:是否允許該字段為null,該屬性應該根據資料庫表的外來鍵約束來確定,預設為true

fetch:表示抓取策略,預設為fetchtype.eager

cascade:表示預設的級聯操作策略,可以指定為all,persist,merge,refresh和remove中的若干組合,預設為無級聯操作

targetentity:表示該屬性關聯的實體型別.該屬性通常不必指定,orm框架根據屬性型別自動判斷targetentity.

示例://訂單order和使用者user是乙個manytoone的關係

//在order類中定義

@manytoone()

@joincolumn(name="user")

public user getuser()

9、@joincolumn 

可選@joincolumn和@column類似,介量描述的不是乙個簡單字段,而一乙個關聯字段,例如.描述乙個@manytoone的字段.

name:該字段的名稱.由於@joincolumn描述的是乙個關聯字段,如manytoone,則預設的名稱由其關聯的實體決定.

例如,實體order有乙個user屬性來關聯實體user,則order的user屬性為乙個外來鍵,

其預設的名稱為實體user的名稱+下劃線+實體user的主鍵名稱

示例:見@manytoone

10、@onetomany(fetch=fetchtype,cascade=cascadetype) 

可選@onetomany描述乙個一對多的關聯,該屬性應該為集體型別,在資料庫中並沒有實際欄位.

fetch:表示抓取策略,預設為fetchtype.lazy,因為關聯的多個物件通常不必從資料庫預先讀取到記憶體

cascade:表示級聯操作策略,對於onetomany型別的關聯非常重要,通常該實體更新或刪除時,其關聯的實體也應當被更新或刪除

從pojo

@entity    

@table(name = "t_oneb")    

public class oneb implements serializable    

hibernate驗證註解

註解適用型別

說明示例

@pattern

string 

通過正規表示式來驗證字串

@attern(regex=」[a-z]」)

@length

string

驗證字串的長度

@length(min=3,max=20)

@email

string

驗證乙個email位址是否有效

@email

@range

long

驗證乙個整型是否在有效的範圍內

@range(min=0,max=100)

@min

long

驗證乙個整型必須不小於指定值

@min(value=10)

@max

long

驗證乙個整型必須不大於指定值

@max(value=20)

@size

集合或陣列

集合或陣列的大小是否在指定範圍內

@size(min=1,max=255)

以上每個註解都可能性有乙個message屬性,用於在驗證失敗後向使用者返回的訊息,還可以三個屬性上使用多個註解

JPA註解介紹

必須,name為可選,對應資料庫中一的個表 entity 標識這個pojo是乙個jpa實體 public class users implements serializable可選,通常和 entity配合使用,只能標註在實體的class定義處,表示實體對應的資料庫表的資訊 name 可選,表示表的...

資料庫 JPA關係資料對映

jpa提供四種標準用法為 table,sequence,identity,auto auto 主鍵自動增長,由應用程式控制 jpa預設策略就是auto identity 主鍵由資料庫自動生成 主要就是自動增長 sequence 根據底層資料庫的序列來生成主鍵,條件就是資料庫支援序列。table 使用...

jpa返回值對映 JPA基本資料型別對映

employ author administrator entity table name t employ sequencegenerator name seq sequencename seq sys func menu initialvalue 0,allocationsize 1 oracl...