hibernate 主键生成策略

Hibernate中主键的生成策略主要有以下几种:

(1)uuid

原理是使用128位的uuid算法产生主键,从而能够确保网络环境下的一致性。使用此生成策略时,实体类的主键是String类型的,映射成表中字段为varchar。适用所有数据库。

[java] view plaincopyprint?

  1. <id name="id" column="id">
  2. <span style="white-space:pre">    </span><generator class="uuid"></generator>
  3. </id>

(2)native

原理是根据数据库类型自动选择sequence、identify以及hilo。使用此生成策略时,实体类的主键是int类型的,映射成表中字段为int,若为mysql,则id自增长。

[java] view plaincopyprint?

  1. <id name="id" column="id">
  2. <generator class="native"></generator>
  3. </id>

(3)identity

原理是适用于MySQL、DB2、MS SQL Server,采用数据库生成的主键,用于为long、short、int类型生成唯一标识。

(4)increment

用于为long, short或者int类型生成 唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。

(5)sequence

在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence), 而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。

(6)hilo

使用一个高/低位算法高效的生成long, short 或者 int类型的标识符。给定一个表和字段(默认分别是 hibernate_unique_key 和next_hi)作为高位值的来源。 高/低位算法生成的标识符只在一个特定的数据库中是唯一的。

使用注解时,默认为:@GeneratedValue ,等同于native策略。

时间: 2024-10-20 20:49:18

hibernate 主键生成策略的相关文章

160727、自定义hibernate主键生成策略生成字符串+数字自增长

需求:需要自增长注解如MyId0001.MyId0002.MyId0003 实现:实现这个接口org.hibernate.id.IdentifierGenerator 一.MyIdGenerator.java(测试用,实际项目中获取链接等可以改变) import java.io.Serializable; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import

java框架篇---hibernate主键生成策略

Hibernate主键生成策略 1.自动增长identity 适用于MySQL.DB2.MS SQL Server,采用数据库生成的主键,用于为long.short.int类型生成唯一标识 使用SQL Server 和 MySQL 的自增字段,这个方法不能放到 Oracle 中,Oracle 不支持自增字段,要设定sequence(MySQL 和 SQL Server 中很常用) 数据库中的语法如下: MySQL:create table t_user(id int auto_increment

hibernate主键生成策略值sequence

主键生成策略采用sequence,但没有指定具体的sequence的时候,Hibernate会访问一个默认的sequence,是hibernate_sequence,我们也需要在数据库中建立这个sequence xml文件配置,采用默认seq <id name="pkId" type="java.math.BigDecimal"> <column name="PK_ID" precision="22" sca

Hibernate主键生成策略(转)

1.自动增长identity 适用于MySQL.DB2.MS SQL  Server,采用数据库生成的主键,用于为long.short.int类型生成唯一标识 使用SQL Server 和 MySQL  的自增字段,这个方法不能放到 Oracle 中,Oracle 不支持自增字段,要设定sequence(MySQL 和 SQL Server  中很常用) 数据库中的语法如下: MySQL:create table t_user(id int auto_increment primary  key

[转]hibernate主键生成策略

1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免. <id name="id" column="id"> <generator class="assigned" /> </id&g

hibernate主键生成策略

引用:http://www.cnblogs.com/hoobey/p/5508992.html 1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免. <id name="id" column="id"> <gene

初学Hibernate主键生成策略

具有业务含义的主键叫自然主键:随机生成,不具备业务含义的字段作为主键,叫代理主键. 在表与POJO类关系映射文件XXX.hbm.xml中,可通过配置id元素下generator节点的class属性指定数据表主键生成策略<generator class="生成策略"></generator>:所谓主键生成策略就是hibernate怎样管理表的主键 主键生成策略:1~4自动增长(1.2.3······),代理主键:5主键为字符串,代理主键:6一般用于自然主键,需要在

Hibernate主键生成策略总结(转)

Hibernate提供的主键生成策略,使我们可以在实体类的映射xml文件中设定关键字来告诉hibernate我们要使用的主键生成方式,然后hibernate会根据设定完成数据库的主键控制. 一.首先通过举例子来了解实体映射文件(*.hbm.xml)中对id生成策略配置格式 用户User的实体类User.java [java] view plaincopy package com.bjpowernode.hibernate; import java.util.Date; public class 

hibernate主键生成策略(转载)

http://www.cnblogs.com/kakafra/archive/2012/09/16/2687569.html 1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免. <id name="id" column="id&quo

Hibernate主键生成策略总结

主键是干什么的? 这次我要总结的东西是HIbernate的主键生成策略,那么我们就要研究一下,什么是主键?为什么要研究这个东西?Hibernate在处理数据上如何处理主键. 带着以上的问题我们来研究主键到有什么作用.首先数据在存储在数据库的表中,我们要把数据查询出来,但是当数据量多到一定程度的时候,我们发现一 个问题,就是查找出满足条件的数据好慢哦,慢的我们是不是很闹心,那就对了,因为没有主键,还有,有时候想找唯一一条记录,可是满足条件的数据有 上万条根本没法唯一识别,怎么办,所以,主键起到了以