java - JPA 事务和触发器/计划作业可能发生冲突

标签 java jpa plsql triggers jobs

在我们的应用程序中,我们使用PL/SQL来维护数据的持久性,我们还大量使用PL/SQL存储过程、计划作业和触发器来实现部分应用程序逻辑。

我的问题是:

如果我担心冲突,请使用JPA访问此持久性
JPA 事务 可能与 DB 上定义的上述触发器和计划作业一起使用吗?

如果您能指出一些在线资料,这也会非常有帮助 我可以阅读来消除我的疑虑。
谢谢。

最佳答案

你可能确实有问题。在数据库中实现业务逻辑可能会导致代码重复。但您最大的问题与数据完整性和一致性有关:

  1. 您的应用程序是否使用乐观锁定。如果是,那么 JPA 可能无法看到相关实体版本的更改。如果由于 PLSQl 代码而发生更改,则不会抛出乐观锁异常。除非版本控制也在其中实现。
  2. 缓存。如果您使用缓存,您可能最终会遇到缓存与数据库状态不一致的情况。例如,您读取实体 A,其状态被缓存,然后 PLSQL 后台过程更新其状态。然后你进行另一个更新并保留数据......你有问题。然后,我们再次讨论第一点,即如何对数据进行版本控制。

总的来说,混合 PL/SQL 和 Hibernate 我真的不喜欢它......

关于java - JPA 事务和触发器/计划作业可能发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36248881/

相关文章:

java - 如何使用 JPA 填充闭包表?

java - Hibernate ManyToMany 结果为笛卡尔积

java - 使用 JPA 和 JUnit 测试时如何一致地删除内存数据库中的 H2

SQL 多条件 CTE 递归

java - 如何在 Eclipse 插件应用程序中获取完整方法名称

java - 子对象更新时 Salesforce 更新主记录

sql - 甲骨文漏洞? SELECT 不返回重复项,SELECT 中的 INSERT 有重复的行

oracle - 遇到符号PLSQL

java - Jasypt加密-加密时删除斜杠

java - 如何在 java swing 应用程序中使用 Windows NT 登录凭据进行用户身份验证?