Hibernate主键生成策略
来源:互联网 发布:mba智库百科知乎 编辑:程序博客网 时间:2024/06/15 15:23
1. identity
1.1 实现
<id name="id" column="id" type="int"> <generator class="identity"/> </id>
1.2 注意
1.2.1此种方法只适用于存在自增的数据库,如mysql中的auto_increment,sql server中的Identity,支持的数据库有MySql、SQL Server、DB2、Sybase和HypersonicSQL
1.2.2 用此种方式建表,会根据数据库不同自动创建主键为自增类型
1.2.3 作用:使用数据库的字段自增说明来生成主键
2. sequence
2.1 实现
<id name="id" column="id" type="int"> <generator class="sequence"/> </id>
2.2 注意
2.2.1此方法适合于没有自增的数据库
2.2.2 适合的数据库为Oracle 、DB2(Mysql/SQlServer不支持)、PostgreSql、SAPDb
2.2.3 作用:使用数据库的sequence来生成主键
3.hilo
3.1 实现
<id name="id" column="id" type="int"> <generator class="hilo"> <param name="table">hi_value</param> <param name="column">next_value</param> <param name="max_lo">10</param> </generator> </id>
说明:需要一个辅助表,用来生成主键,table为生成主键的表,column为生成的主键的列,max_lo为间隔的值
3.2 注意
3.2.1 作用:另外生成一张表,专门用来生成主键,从而实现主键自增
3.2.2对于既没有字段自增说明,又没有sequence的数据库很好用
4. native
说明:native会根据数据库的不同自动选择identity、sequence、hilo方式生成主键,所以说通用性最强
5. increment
存在多线程不安全问题,所以直接别用
6. assigned 手工指定id
7. uuid
生成uuid类型的id
总结:
1) 如果主键是int、long,可以直接使用native自动生成主键,如果主键是String,可以使用uuid自动生成主键
2) 一般来说只推荐使用native和uuid
3) UUID,increment、Hilo、assigned:对数据库无依赖
4) identity、sequence主键都依赖数据库的生成方式
5) native根据数据库自动选择是identity、sequence、hilo
0 0
- hibernate主键生成策略
- Hibernate 主键生成策略
- Hibernate 主键生成策略
- hibernate 主键生成策略
- Hibernate 主键生成策略
- Hibernate 主键生成策略
- Hibernate 主键生成策略
- hibernate主键生成策略
- hibernate主键生成策略
- Hibernate主键生成策略
- hibernate主键生成策略
- hibernate主键生成策略
- Hibernate主键生成策略
- Hibernate 主键生成策略
- Hibernate 主键生成策略
- hibernate主键生成策略
- hibernate主键生成策略
- HIBERNATE主键生成策略
- 前端技术入门
- tomcat server.xml配置中文解析
- JavaScript练习—在页面中显示一个九九乘法表
- IO流(管道流)
- 大端小端格式详解
- Hibernate主键生成策略
- 安装SQL Server 2008时,安装程序配置检查RebootRequiredCheck时失败
- POJ 2286 The Rotation Game (IDA*)
- IO流(RandomAccessFile)
- 基于Android小说阅读器滑动效果的一种实现
- IO流(操作基本数据类型的流对象DataStream)
- HDU 2063 过山车(匈牙利算法 二分图的最小顶点覆盖 二分图最大匹配)
- ZMQ简介
- ZOJ - 2750 Idiomatic Phrases Game (最短路径)