我知道 SO 有很多关于通过 jpa/Hibernate 持久化对象时验证数据的帖子。大多数答案都说应该在持久化之前执行数据读取,以便在实际持久化期间很少抛出异常。
这与依赖数据库约束相反,对性能有不良影响。此外,在持久化之前大量读取数据的原因似乎很重要,因为我们真的不知道休眠异常何时以及如何出现。但是根据这种推理,如果由于罕见的原因而出现异常,我们仍然无法以好的方式处理它。
所以,我的想法是使用一个 bean (beanA) 来迭代对象列表,并在每次迭代中调用另一个 bean(beanB),该 bean(beanB) 具有一个名为 persistOneObject() 的方法。persistOneObject() 被注释为@requires_new。因此,只有在失败时才会回滚单个事务,然后我们继续处理新事务中的下一个对象。
这在理论上应该有效还是因为您不确定 Hibernate 何时真正提交等而难以达到这种行为?这是糟糕的设计吗?我现在不会提供任何代码示例,因为我想听听关于设计的一般想法,而不是关于实现的具体想法。有没有其他方法可以解决它?还是我应该在坚持之前先阅读?
谢谢!