hibernate5--主键生成策略

Posted 花娣丫头小愤青

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate5--主键生成策略相关的知识,希望对你有一定的参考价值。

1、hibernate自己维护主键的值。首先获取该表中最大主键值,然后加一插入。主键字段对应的属性类型可以是int、short、long以及其封装类型。在高并发或者集群的情况下不能使用。

2、identity:使用数据库自身自增长来维护。

<id name="id" column="tid">
            <generator class="sequence"></generator>

结果sql

Hibernate: 
    
    create table hibernate_sequence (
        next_val bigint
    )
Hibernate: 
    
    insert into hibernate_sequence values ( 1 )
Hibernate: 
    
    create table t_student (
        tid integer not null,
        tname varchar(255),
        tage integer,
        tscore double precision,
        primary key (tid)
    )
Hibernate: 
    select
        next_val as id_val 
    from
        hibernate_sequence for update
            
Hibernate: 
    update
        hibernate_sequence 
    set
        next_val= ? 
    where
        next_val=?
Hibernate: 
    insert 
    into
        t_student
        (tname, tage, tscore, tid) 
    values
        (?, ?, ?, ?)
    <id name="id" column="tid">
            <generator class="native"></generator>
        </id>

3、由Hibernate根据所使用的数据库支持能力从identity、sequence生成策略中选择一种。

4、assigned生成策略:程序员通过setId()手动设置。

5、uuid生成策略:使用IP地址、JVM的启动时间、当前系统时间、和一个计数器值经过计算产生。是一个32位长度的字符串。

示例:

 

以上是关于hibernate5--主键生成策略的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate主键生成策略

大家一起撸代码之——Hibernate各种主键生成策略与配置详解

Hibernate——主键生成策略CRUD 基础API区别的总结 和 注解的使用

ssh注解中主键生成策略无效

es mapping 怎么指定主键生成策略

Hibernate各种主键生成策略与配置详解