hibernate native 主键生成策略

8 篇文章 0 订阅
6 篇文章 0 订阅

前一次做个系统用的oracle数据库,使用hibernate生成主键的策略是SEQUENCE,当时觉得很累,因为不知道怎么的,oracle+sequence+trigger怎么也取不到新增数据时的主键值。

 

这次就把重点放这里了,同时还有两个新的问题,

1。到底哪种hibernate生成主键的策略,性能优一点;

2。主键生成策略最好是能跨数据库的。

 

 

大家都说性能,oracle都是用的sequence,所以主键还是想用这个方式生成。

接着就是返回新增数据的主键


native
根据底层数据库的能力选择 identity、sequence 或者 hilo 中的一个;

也就是说,主键生成,由hibernate选择。

 

对于内部支持标识字段的数据库(DB2、MySQL、Sybase 和 MS SQL),你可以使用 identity 关
键字生成。对于内部支持序列的数据库(DB2、Oracle、PostgreSQL、Interbase、McKoi 和 SAP
DB),你可以使用 sequence 风格的关键字生成。这两种方式对于插入一个新的对象都需要两次
SQL 查询。

 

查询了一下更多的网上资料,不知道在哪里看到了,这种生成主键的策略,如果是mysql,他会选择auto_increment方式生成主键;如果是oracle,他会选择sequence方式;只是在使用oracle数据库时,需要创建一个hibernate_sequence,这是hibernate保留的,不建会报错(测试过)。

 

如下是完全的代码:

Model:

 

hibernate   mapping

 

 oracle表创建脚本:

 

hibernate_sequence创建脚本

 

Hibernate   DAO

 

DAO  TEST  Base Class

 

User DAO  Test

 

 

spring bean

 

完美的测试成功

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值