天天看點

Hibernate學習之Hibernate注解總結

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