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

本文介绍了在Oracle数据库中,使用Hibernate实现主键自动增长的两种方法。第一种方法是通过创建sequence,并在Hibernate配置文件中指定sequence名称,避免使用触发器。详细阐述了sequence的缓存大小对ID连续性的影响。第二种方法未详尽说明,表示作者尚未尝试。
摘要由CSDN通过智能技术生成

根据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!

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值