我有一个使用 EJB 2.x 实体 bean (BMP) 的大型应用程序。众所周知,这是一种可怕的持久性策略(如果需要,我可以详细说明)。

我想开始迁移此应用程序以使用更具表现力、透明和非侵入性的持久性策略,并且鉴于我公司以前的经验,Hibernate 3.x 是显而易见的选择。

迁移到 Hibernate 需要一段时间,因为应用程序中有 100 多个表使用实体 bean。因此,我正在考虑一种分阶段的方法,其中两种持久性策略并行运行,如果可能的话,最好同时在同一个表上运行。

我的问题是,结合这两种持久性策略有哪些陷阱(如果有)?他们会互相妨碍吗?

有帮助吗?

解决方案

正如 jodonnel 所说,你必须注意缓存,因为如果你在 Hibernate 中使用二级缓存,并且在 Hibernate 外部修改表,那么 Hibernate 无法知道其缓存条目是否已过时。

对于事务来说,它们都应该使用容器提供的JTA,因此它应该是安全的。

其他提示

我想真正需要小心的是使用 Hibernate 会话。Hibernate 会缓存一些东西,这可能会造成妨碍。

坦率地说,我建议如果您采用 Hibernate,请完全放弃 Entity beans。在会话 bean 中进行 Hibernate 工作并让会话 bean 管理您的事务。

或者也可以使用 EJB 3,它是 Hibernate 标准化到 Java Persistence API 中的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top