如何使用 JPA/EJB3 和 WildFly 读取未提交的数据?
How to read uncomitted data using JPA/EJB3 and WildFly?
我已将遗留企业应用程序从 EJB2.1 迁移到 JPA/EJB3 并将 JBoss 4.x 迁移到 WildFly 17。
在整个应用程序中,遵循下面提到的模式,由于时间限制,我不打算修改错误的模式。在数据库中设置的默认隔离级别是读提交。
模式:
开始交易
保存数据
通过 finder 方法读取数据 - 这需要未提交读取
更新一些东西
提交交易
通过查找器方法读取数据 - 这需要未提交读取才能读取脏数据。
在 EJB2.1 中,这是通过只读 beans 处理的,我在将应用程序迁移到 JPA 时删除了它们。
这是否可以在不修改此处使用的代码模式的情况下实现?
感谢帮助!
我会在数据源级别设置隔离级别
因为我使用的是 JBoss,它使用休眠作为实体管理器,所以我将 bean 从 JPA 解包到休眠会话,然后将实体从休眠中分离出来,使其成为只读的。
这完全没有解决问题,我在应用程序中缓存的对象很少,每当需要只读 bean 时,首先要查找缓存。
我已将遗留企业应用程序从 EJB2.1 迁移到 JPA/EJB3 并将 JBoss 4.x 迁移到 WildFly 17。
在整个应用程序中,遵循下面提到的模式,由于时间限制,我不打算修改错误的模式。在数据库中设置的默认隔离级别是读提交。
模式:
开始交易
保存数据
通过 finder 方法读取数据 - 这需要未提交读取
更新一些东西
提交交易
通过查找器方法读取数据 - 这需要未提交读取才能读取脏数据。
在 EJB2.1 中,这是通过只读 beans 处理的,我在将应用程序迁移到 JPA 时删除了它们。
这是否可以在不修改此处使用的代码模式的情况下实现?
感谢帮助!
我会在数据源级别设置隔离级别
因为我使用的是 JBoss,它使用休眠作为实体管理器,所以我将 bean 从 JPA 解包到休眠会话,然后将实体从休眠中分离出来,使其成为只读的。
这完全没有解决问题,我在应用程序中缓存的对象很少,每当需要只读 bean 时,首先要查找缓存。