hibernate mysql 注解主健_Hibernate属性注解

属性级别注解可以加在属性字段上也可以加在对应的get方法上。

@Id 实体类中必须要有,对应了数据库表的主键

@Version 用于实现乐观锁

@SequenceGenerator 与@GeneratedValue配合使用,需要数据库支持序列号

@GeneratedValue 声明主键生成策略。

@Column 映射到表的字段,以及相关定义

@Embedded 表示该属性是嵌入类

@EmbeddedId 表示该属性是嵌入类作为复合主键

@Lob 表示属性将被持久化为Blob或者Clob类型

@Basic 默认会加上该注解,默认值是可空和即时加载

@Transient 表示该属性在数据库中没有相对应的字段,让orm框架忽略该属性

@Id

实体类中必须要有,对应了数据库表的主键,可以有一个或多个属性。(若多个属性定义为主键,则实体类要实现serializable接口。)

@Column

映射到表的字段,并且声明数据库中该字段的详细定义。

name:对应字段名,默认与属性名一致(大写对应划线分隔小写)

nullable: 是否可空,默认true。

unique:是否是唯一标识,默认false。

length: 字段长度,只对string类型的生效,默认255

insertable:表示该字段不可插入,默认为true

updateable: 表示该字段一旦插入不可更新。insertable和updatable属性一般多用于只读的属性,例如主键和外键等。这些字段的值通常是自动生成的。对于一经创建就不可更改的字段,可以设置该属性。

@GeneratedValue

@GeneratedValue(strategy=GenerationType.***, generator="")

public @interface GeneratedValue {

GenerationType strategy() default GenerationType.AUTO;

String generator() default "";

}

非必须,声明主键生成策略。

GenerationType.AUTO: 默认值,把主键生成策略交给JPA厂商(主键的生成规则是JPA的实现者来确定的),由它根据具体的数据库选择合适的策略,可以是Table/Sequence/Identity中的一种。。

GenerationType.INDENTITY:

主键交由数据库自动生成(如自增)。

根据数据库的Identity字段生成,多数数据库支持IDENTITY列,数据库会在新行插入时自动给ID赋值,这也叫做ID自增长列

GenerationType.SEQUENCE: 使用根据底层数据库的序列( Sequence)来生成主键,条件是数据库支持序列。。

和@SequenceGenerator(name,sequenceName,initialValue,allocationSize)配合使用。

属性

说明

name

命名该生成器的名字,需要与@GeneratedValue的generator的值相对应。

sequenceName

数据库序列号的名字,重名会导致多个表共用一个序列号

initialValue

初始值

allocationSize

一次性获取多个,避免频繁获取。

GenerationType.TABLE:使用指定表来决定主键取值,结合@TableGenerator使用,generator指定生成器的名字。

这种方法生成主键的策略可以适用于任何的数据库,不必担心不同数据库不兼容造成的问题。

可以在数据库中新建序列表来生成主键,序列表一般包含两个字段:第一个字段表示表,第二个字段是该表的最大序号。这样,只需要一张序列就可以用于多张表的主键生成。

@Id

@GeneratedValue(strategy = GenerationType.TABLE,generator="my_gen_name")

@TableGenerator(name = "my_gen_name", table="my_gen_table_name", pkColumnName="gen_name", valueColumnName="gen_value", pkColumnValue="pk_column_value", allocationSize=50)

//那么新增记录的时候表my_gen_name的gen_name=pk_column_value的这行记录的gen_value会加1

@Version

用于实现乐观锁,version相同的才允许更新。

@Transient

表示该属性在数据库中没有相对应的字段,让orm框架忽略该属性

@Embedded

表示该属性的类是嵌入类(该类需要@Embeddable)

@EmbeddedId

使用嵌入式主键类来作为该实体类的复合主键。

该主键类必须实现serializable接口,必须由默认public无参构造函数,必须重写equals和hashCode方法

@Lob

表示属性将被持久化为Blob或者Clob类型

@Basic

该注解默认被加上

属性

说明

fetch

EAGER(即时加载)和LAZY(懒加载),默认EAGER

optional

属性是否可空,默认true

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值