在hibernate中,当使用sequence
作为插入的生成策略时,它首先从数据库中查询序列中的下一个值,然后将其设置在实体中。之后该实体将持久保存在数据库中。综上所述,执行了两个查询。
流程:
- Hibernate 获取序列的下一个值
- Hibernate 将获取的值设置为实体的 ID
- Hibernate 会保留实体,并在查询中设置其 ID
查询:
选择
CUSTOM_SEQUENCE.nextval
从
双
然后在插入语句中使用该值。
问题:
无论如何,我们可以生成一个像 INSERT INTO foobar 这样的查询
(foo_id, foo)
VALUES (FOOBAR_SEQUENCE.nextval, 'bar');
在 hibernate 状态下?
最佳答案
作为替代方案,您可以使用 Hibernate seqhilo generator这将通过请求更大的序列并在内部处理 ID 来避免往返数据库。
关于java - Oracle 中使用序列生成 Hibernate ID - 单次数据库访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17060944/