hibernate主键映射

实体类最好有主键列。主键尽量使用可以值为null的类型。

 

@配置主键

使用@Id声明该列为主键列。

同时使用@Column声明该列的列名。当列为与属性一致时,@Column配置可以省略。

@GeneratedValue用于指定主键的生成策略。如果不配置@GeneratedValue,则必须手动设置ID值。

@Id

@Column(name="id")

@GeneratedValue(strategy= GenerationType.AUTO)

privateInteger id;

 

到目前为止,@注解只支持4种主键生成策略

ATUO

自动方式,根据底层数据库自动选择。如果为MySQL等支持自增长类型的数据库,则为自增长类型。

TABLE

使用指定的表来决定主键的取值,一般结合@TableGenerator使用,例如:

@Id

@TableGenerator(name="tb_cat_gen",allocationSize=1)

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

private Integer id;

SEQUENCE

使用Sequence来决定主键的取值,适合OracleDB2PostgreSQLSAP DB等支持Sequence的数据库,一般结合@SequenceGenerator使用。

@Id

@SequenceGenerator(name="seq_cat",allocationSize=25)

@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_cat")

private Integer id;

IDENTITY

支持DB2MySQLMS SQL ServerSybaseHypersonicSQL数据库的idenit类型主键。

 

XML配置主键

<id name="id" column="id">

<generatorclass="native" />

</id>

XML主键生成规则

native

取决于数据库,相当于GenerationType.AUTO

identity

使用identity类型,相当于GenerationType.IDENTITY

sequence

使用sequence,相当于GenerationType.SEQUENCE。需要指定sequence的名称,例如:

<id name="id" column="id">

<generator class="sequence">

<param name="sequence">person_id_sequence</param>

</generator>

</id>

increment

自增长类型,由Hibernate而不是数据维护

hilo

hi/low算法,使用指定的表给主键赋值,相当于GEnerationType.TABLE。需要指定表名、列名等。

seqhilo

基于sequencehilo算法

uuid

使用128UUID算法计算一个唯一的值,会使用IP地址及相关的计算机硬件信息。计算结果为32位的16进制数,对应的主键类型必须为String

guid

使用MySQL或者MS SQL Server等数据库提供的CUID

assigned

默认值,不使用任何策略,在保存进数据库之前必须使用setter方法赋值

select

使用数据库触发器赋值

foreign

使用外键赋值,在一对一实体关系时,可保证关系双方的ID保持一致。

 

 

今天就先写到这里,更多学习资料  


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值