迁移 EJB2.x BMP 实体 bean

Posted

技术标签:

【中文标题】迁移 EJB2.x BMP 实体 bean【英文标题】:Migrating EJB2.x BMP entity beans 【发布时间】:2008-12-31 16:45:51 【问题描述】:

我们使用带有 BMP(bean 管理的持久性)的 EJB2.x 实体 bean。 EJB3 似乎不支持 BMP。我们曾希望保持最新状态并升级到 EJB3。有谁知道 3.0 中是否有任何 BMP 选项可用?

据我所知,使用 3.0,所有实体 bean 都必须使用 JPA 和定义为 ORM。有一些使用原生 SQL 的选项,但这仍然只是使用 JPA 实现 ORM 的一种方式。

我不确定是否有另一种 EJB3 方法可以实现与 EJB2.x BMP 实体 bean 相同的功能。我们目前使用标准的 ejbStore 方法通过原生 SQL 更新数据库,使用 ejbLoad 方法查找所有 bean 并在事务回滚时刷新 bean。我认为您可以使用 EJB3 会话 bean 来做到这一点,但我不确定。

也许我们应该迁移到 Spring,而不是迁移到 EJB3 bean。

【问题讨论】:

Spring 和 EJB3 不一定是相互排斥的。你在说春天的哪一部分?这是一个大框架,您不必一次使用所有框架。 顺便说一句,我们也使用 BMP 2.1,我感受到了你的痛苦。我认为您在现代 API 中找不到类似内容的原因是人们已经意识到,当我们有许多 ORM 库会以与 db 无关的方式为您生成查询时,手工编写 SQL 是一个坏主意(您只需要指定 db 方言)。 【参考方案1】:

如果您真的想手动编写 SQL,请选择 POJO 和原始 JDBC DAO。但这也可能是一个重新思考您做事方式并拥抱 ORM/JPA 的机会。

【讨论】:

【参考方案2】:

过去,我使用 JTA 混合使用 Hibernate + EJB2 (CMP + BMP) 共享事务上下文,没有任何问题。

这个问题很相似... 看看https://cwiki.apache.org/GMOxDOC22/developing-bean-managed-persistence-with-jpa.html。您可以实现自己的 EntityManager。

如果运气好的话,您甚至可以共享事务上下文。

【讨论】:

以上是关于迁移 EJB2.x BMP 实体 bean的主要内容,如果未能解决你的问题,请参考以下文章

关于EJB--实体Bean的BMP和CMP选择

EJB 未使用 @EJB 在 Wildfly 9.0.0 中初始化

将 JSF 托管 bean 迁移到 CDI 托管 bean

实体框架 - 迁移 - 代码优先 - 每次迁移播种

实体框架迁移 - 如何创建单元测试以确保迁移模型是最新的?

核心数据迁移删除实体数据