Hibernate遇到oracle之主键生成策略
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Hibernate遇到oracle之主键生成策略,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1876字,纯文字阅读大概需要3分钟。
内容图文
Hibernate+mysql,感觉Hibernate很好用,也出过什么大问题;这周,公司的产品要部署到Orecle,虽然产品号称支持Oracle但是我自己知道,这个产品压根儿就没在Oracle上测试过,更不要是使用了。于是就开始紧罗密布的测试了,问题自然一大堆,现在说一个关于主键生成策略的问题。首先,众所周知,Hibernate可以自动建表。当我们把项目部署好,运行的时候发现,确实自动建表了,但是少了很多表,就是有的表生成了,有的表木有生成,这就让人很头疼了。一波操作之后,发现Hibernate配置文件中,主键生产策略有误,下面就给大家总结一下当Hibernate遇到oracle之后,主键生成策略变化。
首先在非集群情况下:
可以使用hibernate自带的increment策略生成主键 ,但是increment 实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。从根本来讲,主键是在Java虚拟机上产生而不是数据库产生的,所以increment绝不能在集群环境下使用。
因此在集群情况下:
就必须使用sequence策略。如果采用sequence策略,就必须在oracle数据库里面创建序列:
CREATE SEQUENCE emp_sequence --序列名
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
当然有的朋友还比较喜欢native这个策略,万金油嘛;但是要注意了在数据库是Oracle的时候,如果不懂native的机制,那就麻烦了。怎么回事呢?如果使用native策略,那么hibernate会自动调用hibernate_sequence这个序列;如果没有,那自然就出问题了。所以还是在oracle数据库要创建一个名为hibernate_sequence的序列。有人以为反正也要建立sequence为毛要用native啊?不过对于产品化的东西,可能用于多种数据库的东西还是有一定使用性的,就不用到每次部署的时候先去改hibernate的配置文件了嘛。
好了基本就这样吧,祝你好运。
Hibernate遇到oracle之主键生成策略
标签:多表 -- with 策略 span 运行 计数 cycle 操作
本文系统来源:http://www.cnblogs.com/Li-Wei/p/6285225.html
内容总结
以上是互联网集市为您收集整理的Hibernate遇到oracle之主键生成策略全部内容,希望文章能够帮你解决Hibernate遇到oracle之主键生成策略所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。