如何使用 JPA/EJB3 和 WildFly 读取未提交的数据?
Posted
技术标签:
【中文标题】如何使用 JPA/EJB3 和 WildFly 读取未提交的数据?【英文标题】:How to read uncomitted data using JPA/EJB3 and WildFly? 【发布时间】:2020-05-23 10:17:29 【问题描述】:我已将旧版企业应用程序从 EJB2.1 迁移到 JPA/EJB3,将 JBoss 4.x 迁移到 WildFly 17。
在整个应用程序中,都遵循下面提到的模式,由于时间限制,我不打算修改坏模式。数据库中设置的默认隔离级别为已提交读。
图案: 开始交易 保存数据 通过查找器方法读取数据 - 这需要读取未提交 更新一些东西 提交事务
通过 finder 方法读取数据 - 这需要读取未提交的数据才能读取脏数据。 在 EJB2.1 中,这是通过只读 bean 处理的,我在将应用程序迁移到 JPA 时删除了这些。
不修改此处使用的代码模式是否可以实现这一点?
帮助表示赞赏!
【问题讨论】:
【参考方案1】:我会在数据源级别设置隔离级别
【讨论】:
【参考方案2】:由于我使用的是 JBoss,它使用休眠作为实体管理器,我将 bean 从 JPA 解包到休眠会话,然后将实体从休眠中分离以使其成为只读。
这完全没有解决问题,我的应用程序中缓存的对象很少,每当需要只读 bean 时,首先要查找缓存。
【讨论】:
以上是关于如何使用 JPA/EJB3 和 WildFly 读取未提交的数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jboss-cli 在 WildFly 17 中创建 JMS 队列