架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11193|回复: 2

[资料] nhibernate native 主键生成策略

[复制链接]
发表于 2017-4-7 10:02:04 | 显示全部楼层 |阅读模式

前一次做个系统用的Oracle数据库,使用hibernate生成主键的策略是SEQUENCE,当时觉得很累,因为不知道怎么的,oracle+sequence+trigger怎么也取不到新增数据时的主键值。



这次就把重点放这里了,同时还有两个新的问题,

1。到底哪种hibernate生成主键的策略,性能优一点;

2。主键生成策略最好是能跨数据库的。



大家都说性能,oracle都是用的sequence,所以主键还是想用这个方式生成。

接着就是返回新增数据的主键


native
根据底层数据库的能力选择 identity、sequence 或者 hilo 中的一个;

也就是说,主键生成,由hibernate选择。


native 和dentity都是数据库id序列号生成策略,native 是hibernate自动选择生成,identity是自己选择,identity是mysql,sql2000等数据库生成方式,与之对应还有一个sequences是oracle等生成方式,一般来说都用native 由hibernate 自动选择可以了

对于内部支持标识字段的数据库(DB2、MySQL、Sybase 和 MS SQL),你可以使用 identity 关
键字生成。对于内部支持序列的数据库(DB2、Oracle、PostgreSQL、Interbase、McKoi 和 SAP
DB),你可以使用 sequence 风格的关键字生成。这两种方式对于插入一个新的对象都需要两次
SQL 查询。



查询了一下更多的网上资料,不知道在哪里看到了,这种生成主键的策略,如果是mysql,他会选择auto_increment方式生成主键;如果是oracle,他会选择sequence方式;只是在使用oracle数据库时,需要创建一个hibernate_sequence,这是hibernate保留的,不建会报错(测试过)。




上一篇:关于类中静态,非静态,构造方法的执行顺序总结
下一篇:处理并发Timestamp和ConcurrencyCheck区别
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2017-4-7 10:02:07 | 显示全部楼层
native有天生的,本土的,也就是說生來就有的,
那也就是說自動生成,不需要人工來幫忙或者管控的.

而assigned是指指定的,分配的,
如果你不賦予他甚麼東西,那麼他是不能實現的.
需要人工,自己把某個東西賦予給它
所以是assigned
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-5-9 04:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表