Hibernate學習之Hibernate注解總結
一、類級别的注解
@Entity
name:表的名字(可選)一般表名和類名相同
必須指定主鍵屬性@Id
@Table
name:映射表的名稱(可選)
catalog:目錄(可選)預設為空
schema:模式(可選)預設為空
與@Entity注解配合使用,隻能表示在實體類class定義處,表示實體類對應資料庫表的資訊
@Embeddable
表示一個非Entity類,不是一個實體類,可以嵌入到實體類中作為一個屬性存在。不映射成表
二、方法級别的注解
@Id
表示映射為主鍵屬性,可以位于主鍵屬性或者其get方法前
如果一個實體類定義多個主鍵屬性,則必須實作serializable接口
如果有string類型的主鍵,長度不能太長,需要用@column注解指定長度
@SequenceGenerator
@GeneratedValue
(可選)用于指定主鍵生成政策
strategy:表示主鍵生成政策,
取值有:
GenerationType.AUTO(預設,根據資料庫底層自動選擇,主鍵是字元串則不能指定為auto)
GenerationType.INDENTITY(根據資料庫identity字段生成)
GenerationType.SEQUENCE(序列。使用squence來決定主鍵的取值)
GenerationType.TABLE(使用指定表來決定主鍵生成政策 與@TableGenerator使用)
generator:生成器
字元串的主鍵手動指派
@GeneratedValue(generator="sid")
@GenericGenerator(name="sid",strategy="assigned")
@Column
将屬性映射到列
@Embedded
表示該屬性是某個嵌入類對象,嵌入類要标注@Embedable注解
@EmbededId
使用嵌入式主鍵類實作複合主鍵
嵌入式主鍵類必須是愛心serializable接口,必須有預設的public無參構造方法,必須覆寫equals和hashCode方法
@Lob
@Version
@Basic
@Transient
(可選) 表示該屬性并非一個到資料庫的字段的映射,如果不加這個注解就會映射到資料庫字段并且ORM預設為其添加@Basic
三、關系映射級别的注解
1、一對一單項外鍵關聯
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name=””,unique=true)
先儲存外鍵對象,再儲存主表對象
主表:
關聯表:
2、一對一雙向外鍵關聯
被控方:
3、一對一雙向外鍵聯合主鍵
4、多對一單向外鍵
@ManyToOne(cascade={cascadeType.ALL},fetch=FetchType.EAGER)
@JoinColumn(name=””,referencedColumn=””)
一方:
多方:
在多方添加一方。
5、一對多單向外鍵
@OneToMany(cascade={cascadeType.ALL},fetch=FetchType.LAZY)
@JoinColumn(name=””)
在一方添加多方
6、一對多雙向外鍵
7、多對多單向外鍵
其中一個多方:
8、多對多雙向外鍵
另一個多方:
原文位址
http://www.bieryun.com/3269.html