【记录十】hibernate框架常用注解

@Entity

使用@Entity注解,表示当前类为实体Bean,需要进行持久化

@Table(name = “user_info”, catalog = “digital”)

使用@Table注解实现数据表user_info与持久化类UserInfo之间的映射,catalog指定数据库名,name指定表名

@Id

使用@Id注解指定当前持久化类的ID标识属性

@GenericGenerator注解----自定义主键生成策略

@GeneratedValue(strategy = GenerationType.IDENTITY)

使用@GeneratedValue注解指定主键生成策略为IDENTITY ----JPA通用策略生成器

数据表中主键的生成策略有很多种方式,这里列出其中的4种

1、第一种类型IDENTITY
这是MySQL和SqlServer的主键生成方式,在主键属性上声明此主键生成类型,每次插入数据时主键会自动递增,而无需对主键赋值

2、第二种类型SEQUENCE
@GeneratedValue(strategy = GenerationType.SEQUENCE)这个注解是对于Oracle数据库的

3、第三种类型AUTO
@GeneratedValue(strategy = GenerationType.AUTO)
AUTO类型能够自动识别你所使用的数据库类型,再根据类型来生成主键策略(如使用mysql时生成mysql的主键自增策略,使用Oracle时使用Oracle的主键策略),将主键生成策略改为此类型,运行后生成的表插入数据同样会自动插入主键

4、第四种类型TABLE
基于表创建sequences的形式,自动创建 hibernate_sequences,用来保存下一条主键的信息

@Column(name = “id”, unique = true, nullable = false)

使用@Column注解指定当前属性所对应的数据表中的字段,name指定字段名,unique指定是否为唯一,nullable指定是否可为null

@Column(name = “userName”, length = 16)

使用@Column注解指定当前属性所对应的数据表的字段,name指定字段名,length指定字段长度

@DynamicInsert(false)

这是一个hibernate对类的注解,用于数据的动态插入,对于持久化类中的属性是否被赋值来动态生成sql语句

@OneToOne

一对一关联查询注解
注解@OneToOne的属性:

cascade:关联属性,这个属性定义了当前类对象操作了之后,级联对象的操作。本例中定义了:CascadeType.ALL,当前类增删改查改变之后,关联类跟着增删改查。

fetch属性:FetchType类型的属性。可选择项包括:FetchType.EAGER 和FetchType.LAZY。 FetchType.EAGER表示关系类(本例是OrderItem类)在主类加载的时候同时加载,FetchType.LAZY表示关系类在被访问时才加载。默认值是FetchType.LAZY。

mappedBy:拥有关联关系的域,如果关系是单向的就不需要,双向关系表,那么拥有关系的这一方有建立、解除和更新与另一方关系的能力,而另一方没有,只能被动管理,这个属性被定义在关系的被拥有方。双向@OneToOne,双向@OneToMany,双向@ManyToMany。

@Inheritance

Inheritance
必须定义其属性strategy
strategy=InheritanceType.SINGLE_TABLE 将父类和所有子类集合,存在一张表中,全部创建新的字段
strategy=InheritanceType.TABLE_PER_CLASS 每一个类创建一个表,这些表相互独立
strategy=InheritanceType.JOINED 将父类、子类分别存放在不同的表中,并且建立相应的外键,以确定相互之间的关系

@Basic(fetch=FetchType,optional=true)

可选

@Basic表示一个简单的属性到数据库表的字段的映射,对于没有任何标注的getXxxx()方法,默认 即为 @Basic

fetch: 表示该属性的读取策略,有EAGER和LAZY两种,分别表示主支抓取和延迟加载,默认为EAGER.

(1)、FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载。

(2)、FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值