主键增长策略
2016-07-26 14:50
246 查看
主键增长策略:
assigned:
1.表示手动指定主键值
2.不管数据库中是否支持自动增长语句,该策略都要求程序设置主键值
3.该策略是没有<generator> 元素时的默认策略
4.容易出现重复的主键
identity:
1.适用于Mysql,MS SQLServer等支持自动增长语句的数据库,不支持oracle
2.适用数据库的自动增长语句来生成主键值,手动设置的主键值不起作用。
3不会出现主键重复的异常 推荐
sequence:
1.适用于Oracle数据库,默认Hibernate适用名字为hibernate_sequence的序列来维护主键。
2.可以使用指定的序列来维护主键,指定方式如下:
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="sequence" >
<param name="sequence">etoak_seq</param>
</generator>
</id>
native:
1.自动选择
2.如果底层数据库使用的是MySQL,则native自动相当于identity
如果底层数据库使用的是Oracle,则native 自动相当于
sequence
increment:1.先查询最大的ID,然后最大的ID+1作为新的ID添加到数据库中。
2.并发环境不要使用。
assigned:
1.表示手动指定主键值
2.不管数据库中是否支持自动增长语句,该策略都要求程序设置主键值
3.该策略是没有<generator> 元素时的默认策略
4.容易出现重复的主键
identity:
1.适用于Mysql,MS SQLServer等支持自动增长语句的数据库,不支持oracle
2.适用数据库的自动增长语句来生成主键值,手动设置的主键值不起作用。
3不会出现主键重复的异常 推荐
sequence:
1.适用于Oracle数据库,默认Hibernate适用名字为hibernate_sequence的序列来维护主键。
2.可以使用指定的序列来维护主键,指定方式如下:
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="sequence" >
<param name="sequence">etoak_seq</param>
</generator>
</id>
native:
1.自动选择
2.如果底层数据库使用的是MySQL,则native自动相当于identity
如果底层数据库使用的是Oracle,则native 自动相当于
sequence
increment:1.先查询最大的ID,然后最大的ID+1作为新的ID添加到数据库中。
2.并发环境不要使用。
相关文章推荐
- SQL中的三值逻辑
- SQL Server 作业批量停止
- 结束SQL阻塞的进程
- 动态生成SQL Server视图作业
- SQL Server 语句操纵数据库
- SQL(结构化查询语句)
- oracle sql日期比较
- linux快速部署mysql服务器
- sql 存储过程分页
- 在WINXP系统上安装SQL Server企业版的方法
- 通过批处理调用SQL的方法(osql)
- SQL Server 存储过程的分页
- ASP程序与SQL存储过程结合使用详解
- SQL SERVER编写存储过程小工具
- 防御SQL注入攻击时需要注意的一个问题
- Microsoft Sql server2005的安装步骤图文详解及常见问题解决方案
- PostgreSQL教程(十九):SQL语言函数
- SQL Server复制需要有实际的服务器名称才能连接到服务器