欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle 主键自增 Native Sequence两种方式(转)

程序员文章站 2022-05-07 20:26:37
...

根据hibernate的文档,有两种方式实现实体对象的主键自动增长。 
第一种:设置ID的增长策略是sequence,同时指定sequence的名字,最好每个表建一个sequence,此种做法就如同MY-SQL中的自动增长一样,不需要创建触发器,具体的oracle数据库脚本及hibernate配置文件如下:

[1]oracle数据库创建sequence:

-- Create sequence 
create sequence TYPEID
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;

以上属性,大都看一下中文就能明白其中的意思,唯独最后一个:cache是多少数字放进数据库缓存等待程序去调用它们来命名ID。如果cache设置数字太大,那么ID就会有跳序号的可能(比如调用了1-18的序号就关闭与数据库的会话,那么19和20将会被丢弃,下次取序号就会跳到21开始);而如果设置数字太小,缓存log将会很多。

[2]hibernate映射文件的配置:

<id name="id" type="java.lang.Integer">
            <column name="ID" length="27" />
            <generator class="sequence" >
                <param name="sequence">TYPEID</param>
            </generator>
        </id>
        <property name="telephone" type="java.lang.String">
            <column name="TELEPHONE" length="12" not-null="true" />
        </property>

 在hibernate映射文件中,对ID的生成策略选择sequence,指定sequence的名字TYPEID就可以了,当你保存新对象的时候,hibernate会自动取得从start with开始的序号作为新对象的ID保存到数据库,所以不需要再使用触发器再来生成新记录的ID!

 

第二种(本人尚未试用,以后更新)

相关标签: sequence hibernate