【发布时间】:2012-09-16 21:20:20
【问题描述】:
我一直在浏览 JPA 文档并在分配序列 id 时遇到了预分配的事情。
虽然出于明显的性能原因它非常好。 但我正在考虑它可能会搞砸事情的场景。
据我了解,当我们在使用表排序或排序对象作为生成序列的策略时设置分配大小=100 时,像 hibernate 或 Eclipse 链接这样的持久性提供程序将维护内存计数器,而用于插入记录的应用程序代码不会有为每个插入去数据库。
当该内存计数器达到 100 时,数据库序列增加 100 并且相同的故事继续。 到目前为止一切顺利。
但是假设我们在生产中遇到了一个错误,我们发现某些表中的记录没有被插入到数据库中。
所以我们准备了将这些记录插入数据库的脚本,现在我们为表的主键赋予什么值。如果我们从数据库中获取值,很有可能在应用程序尝试时会发生冲突使用内存计数器插入记录并会给出 SQL 异常。
有人遇到过这样的问题吗? 处理这种情况的最佳方法是什么?
【问题讨论】:
标签: hibernate orm jpa-2.0 eclipselink