Hibernate学习之Hibernate注解总结

参考:慕课网hibernate注解开发 https://www.imooc.com/learn/524

一、类级别的注解

@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、多对多双向外键

其中一个多方:


另一个多方:



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值