在Oracle中使用序列生成Hibernate ID - 单次访问DB

时间:2013-06-12 08:27:54

标签: java oracle hibernate

在休眠状态下,当sequence用作插入的生成策略时,它首先在DB中查询序列中的下一个值,然后在实体中设置它。之后,此实体将持久保存在db中。总而言之,执行两个查询。

流量:

  • Hibernate获取序列的下一个值
  • Hibernate将获取的值设置为您实体的ID
  • Hibernate持久化实体,并在查询中设置ID

查询:

select CUSTOM_SEQUENCE.nextval from dual

然后在insert语句中使用此值。

问题:

无论如何,我们可以在hibernate中生成像INSERT INTO foobar (foo_id, foo) VALUES (FOOBAR_SEQUENCE.nextval, 'bar');这样的查询吗?

1 个答案:

答案 0 :(得分:2)

作为替代方案,您可以使用Hibernate seqhilo generator,这将避免通过请求更大的序列并在内部处理ID来往返数据库。