如何使用 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 读取未提交的数据?的主要内容,如果未能解决你的问题,请参考以下文章

从 JPA/EJB3 持久性上下文中分离实体

如何使用 java 11 运行 Wildfly 14?

如何配置wildfly以使用EclipseLink?

如何使用 jboss-cli 在 WildFly 17 中创建 JMS 队列

如何在 Wildfly 8 上将应用程序审计记录到单独的文件中

如何使用 CLI 将模块添加到 Wildfly