Hibernate支持oracle主键自增长

oracle本身不支持主键自增长,可以用序列sequence来表示主键增长
在Hibernate中,oracle主键自增长有三种方式:
1.使用序列
在映射文件中
<id name="userId" type="int">
        <column name="ID" />
        <generator class="sequence">
        <param name="sequence">hbm_test_id_seq</param>
        </generator>
</id>
执行结果

Hibernate: select hbm_test_id_seq.nextval from dual
Hibernate: insert into hbm_test (userName, password, ID) values (?, ?, ?)

可以使用序列hbm_test_id_seq来使得oracle主键自增长。

2.使用对象标示符生成策略---increment
在映射文件中
<id name="userId" type="int">
        <column name="ID" />
        <generator class="increment">
        </generator>
</id>

可以实现主键自增长。由SQL语句可知,其执行了两次SQL操作
Hibernate: select max(ID) from hbm_test
Hibernate: insert into hbm_test (userName, password, ID) values (?, ?, ?)

先是查询主键值,然后再插入,进而实现主键自增长

3. 使用对象标示符生成策略---native
在映射文件中
<id name="userId" type="int">
        <column name="ID" />
        <generator class="native">
        </generator>
</id>
可以实现主键自增长。由SQL语句可知,其执行了两次SQL操作,会自动生成一个序列hibernate_sequence
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into hbm_test (userName, password, ID) values (?, ?, ?)

一般来讲用前两种会更好一点,一个自己定义序列,另一个是increment查询后自增长。第三个适合一个映射表的情况,如果多个映射表使用同一序列会造成不便(导致序列可能不连续)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值