6

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

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

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

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

4

2 回答 2

2

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

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

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

于 2008-09-16T01:48:09.950 回答
2

正如jodonnel所说,你必须注意缓存,因为如果你在Hibernate中使用二级缓存并且在Hibernate之外修改了一个表,那么Hibernate无法知道它的缓存条目是陈旧的。

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

于 2008-10-12T23:43:55.067 回答