在我们的应用程序中,我们使用PL/SQL来维护数据的持久性,我们还大量使用PL/SQL存储过程、计划作业和触发器来实现部分应用程序逻辑。
我的问题是:
如果我担心冲突,请使用JPA访问此持久性
JPA 事务 可能与 DB 上定义的上述触发器和计划作业一起使用吗?
如果您能指出一些在线资料,这也会非常有帮助
我可以阅读来消除我的疑虑。
谢谢。
最佳答案
你可能确实有问题。在数据库中实现业务逻辑可能会导致代码重复。但您最大的问题与数据完整性和一致性有关:
- 您的应用程序是否使用乐观锁定。如果是,那么 JPA 可能无法看到相关实体版本的更改。如果由于 PLSQl 代码而发生更改,则不会抛出乐观锁异常。除非版本控制也在其中实现。
- 缓存。如果您使用缓存,您可能最终会遇到缓存与数据库状态不一致的情况。例如,您读取实体 A,其状态被缓存,然后 PLSQL 后台过程更新其状态。然后你进行另一个更新并保留数据......你有问题。然后,我们再次讨论第一点,即如何对数据进行版本控制。
总的来说,混合 PL/SQL 和 Hibernate 我真的不喜欢它......
关于java - JPA 事务和触发器/计划作业可能发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36248881/