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:生成器
字符串的主键手动赋值
@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、多对多双向外键
其中一个多方:
另一个多方: