发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA
1 2 3 4 下一页 Go 4

问一个关于hibernate的OracleDialect问题

    
2003-09-10 23:36
赞助商链接

对于id的自动生成, OracleDialect提供了sequence的方法, 它是直接调sequence来插入ID的.
但一般做法都是用trigger来调sequence插入ID, 这种方法即安全又灵活,
不知OracleDialect怎样处理这种情况

2003-09-10 23:39

好像没处理耶,呵呵

看看源码就清楚了~~~

2003-09-11 00:16

原因很简单,因为session.save()一定要返回主键类对象。

你就算用trigger来读sequence生成主键字段,Hibernate还是要多调用一次SQL:select id from ...;
来获取id字段值构造主键类对象返回。

而不用trigger,也有一次SQL:select nextval from sequ来创建主键类

反正都得用两条SQL,区别也不大,你用trigger,对于Hibernate来说,反而更加麻烦,还需要用户去写trigger,索性不用。





2003-09-11 00:26

oracle 的insert, update 有returning into clause, 不用两条sql.
trigger和returing结合是oracle的推荐方法
Insert into table_a
(value1, value2)
Select value1, value2
From table_b
Returning table_a_id
into :table_a_local;

2003-09-11 00:28

上面的不对
Insert into table_a
(value1, value2)
Returning table_a_id
into :table_a_local;

4Go 1 2 3 4 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com