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位长度的字符串。

示例:

原文地址:https://www.cnblogs.com/huadiyatou/p/7518087.html