Hibernate学习之Hibernate注解总结
Hibernate學習之Hibernate注解總結http://www.bieryun.com/3269.html
一、類級別的注解
@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:生成器
字符串的主鍵手動賦值
@Id
@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、多對多雙向外鍵
其中一個多方:
另一個多方:
總結
以上是生活随笔為你收集整理的Hibernate学习之Hibernate注解总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring-boot 自定义启动图标彩
- 下一篇: swagger + springboo