@entity 對映實體類
@table 對映數句庫表
@entity(name="tablename") - 必須,註解 將乙個類宣告為乙個實體bean。
屬性:name - 可選,對應資料庫中的乙個表。若表名與實體類名相同,則可以省略。
@table(name="",catalog="",schema="") - 可選,通常和@entity 配合使用,只能標註在實 體的 class 定義處,表示實體對應的資料庫表的資訊。
屬性:name - 可選,表示表的名稱,預設地,表名和實體名稱一致,只有在不一致的情況下才需 要指定表名
catalog - 可選,表示catalog名稱,預設為 catalog("").
schema - 可選 , 表示 schema 名稱 , 預設為schema("").
@id 對映生成主鍵
@version 定義 樂觀鎖
@column 對映表的列
@transient 定義 暫態屬性
@id - 必須,定義了對映到資料庫表的主鍵的屬性,乙個實體只能有乙個屬性被對映為主 鍵,置於get***x() 前。
@generatedvalue(strategy=generationtype,generator="") - 可選,用於定義主鍵生成策略。
屬性:strategy - 表示主鍵生成策略,取值有:
generationtype.auto - 根據底層資料庫自動選擇(預設),若資料庫支援自動 增 長型別,則為自動增長。
generationtype.indentity - 根據資料庫的identity欄位生成,支援db2、mysql、 ms、sql server、sybase與hyperanoicsql資料庫的identity 型別主鍵。
generationtype.sequence - 使用sequence來決定主鍵的取值,適合oracle、db2等 支援sequence的資料庫,一般結合@sequencegenerator使用。
(oracle沒有自動增長型別,只能用sequence)
generationtype.table - 使用指定表來決定主鍵取值,結合@tablegenerator使用。
如:@id
@tablegenerator(name="tab_cat_gen",allocationsize=1)
@generatedvalue(strategy=generationtype.table)
hibernate 可以指定 uuid 等主鍵生成方式
@sequencegenerator — 註解宣告了乙個資料庫序列。
屬性:name - 表示該錶主鍵生成策略名稱,它被引用在@generatedvalue中設定的「gernerator」值中。
sequencename - 表示生成策略用到的資料庫序列名稱。
initialvalue - 表示主鍵初始值,預設為0.
allocationsize - 每次主鍵值增加的大小,例如設定成1,則表示每次建立新記錄後自動加1,預設為50.
示例 :
@id
@generatedvalues(strategy=strategytype.sequence)
public int getpk()
從表:無
2.主表a中有乙個從表屬性是b型別的b
主表:@onetoone(cascade = cascadetype.all)
@joincolumn(name="主表外來鍵") //這裡指定的是資料庫中的外來鍵字段。
public b getb()
注意:@joincolumn是可選的。預設值是從表變數名+"_"+從表的主鍵(注意,這裡加的是主鍵。而不是主鍵對應的變數)。
@manytoone - 表示乙個多對一的對映,該註解標註的屬性通常是資料庫表的外來鍵。
1.單向多對一:多方有一方的引用,一方沒有多方的引用。
在多方@manytoone(targetentity=***x.class) //指定關聯物件
@joincolumn(name="") //指定產生的外來鍵欄位名
2.雙向多對一:配置方式同雙向一對多。
示例 :
// 訂單 order 和使用者 user 是乙個 manytoone 的關係
// 在 order 類中定義
@manytoone()
@joincolumn(name="user")
public user getuser() {
return user;
@onetomany - 描述乙個一對多的關聯,該屬性應該為集合型別,在資料庫中並沒有實際字段。
1.單向一對多:一方有集合屬性,包含多個多方,而多方沒有一方的引用。
@onetomany 缺省會使用連線表做一對多關聯
新增@joincolumn(name="***_id") 後,就會使用外來鍵關聯,而不使用連線表了。
2.雙向一對多
1)在多方
@manytoone
@joincolumn(name="自己的資料庫外來鍵列名")
2)在一方
@joincolumn(name="對方的資料庫外來鍵列名")
@manytomany - 可選,描述乙個多對多的關聯。
屬性:targetentity - 表示多對多關聯的另乙個實體類的全名,例如:package.book.class
1.單向多對多關聯:
在主控方加入@manytomany註解即可。
2.雙向多對多關聯:
Hibernate註解對映的使用
hibernate 註解代替對映檔案 hibernate註解 1。entity name entityname 必須,name為可選,對應資料庫中一的個表 2 table name catalog schema 可選,通常和 entity配合使用,只能標註在實體的class定義處,表示實體對應的資料...
Hibernate 使用註解配置對映關係
寫在前面 配置實體類與資料庫的對映關係,有兩種方式 1.使用 hbm.xml 2.使用 註解 一 註解的方式 1.entity 加在類的前面,將類宣告為持久化類。2.table 加在類的前面,為類宣告關聯的表名。如果表名和類名相同,可以省略。eg table name tbl role 3.prox...
hibernate 註解關係
一對一關聯,分單項和雙向兩種策略來解決邏輯註解 onetoone cascade cascadetype.all private userinfoentity userentity onetoone cascade cascadetype.all 新增級聯操作 private identityent...