java - Oracle 中使用序列生成 Hibernate ID - 单次数据库访问

标签 java oracle hibernate

在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/

相关文章:

sql - Oracle sqlplus 注释

oracle - 使用 Types.TIME 将 java.time.LocalTime 保留到 oracle 中会丢失小数秒精度

java - hibernate JPA : 'IS EMPTY' condition doesn't work for collections passed as parameters

java - 如何让 FactoryBean spring 创建的 bean 得到管理?

java - 简单框架的映射 Mime 类型属性

java - Hibernate/Spring - 在事务中回滚事务

java - 如何解决 FindBugs 中的 FCBL_FIELD_COULD_BE_LOCAL 问题?

JavaFX 8 : How to remove the last white pixel from the combobox list

r - 在 R 中加密密码 - 使用 RODBC 连接到 Oracle 数据库

java - JSR303 Hibernate动态 validator