设为首页 加入收藏

TOP

Hibernate遇到Oracle之主键生成策略
2017-01-20 08:15:07 】 浏览:6217
Tags:Hibernate 遇到 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的配置文件了嘛。


好了基本就这样吧,祝你好运。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle 10gR2 DataGuard搭建(非du.. 下一篇Oracle 11g + PL/SQL安装配置及利..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目