2008-09-16 62 views
6

我有一个使用EJB 2.x实体bean(BMP)的大型应用程序。这是众所周知的可怕的持久战略(如果需要,我可以详细阐述)。将EJB 2.x BMP实体bean与Hibernate 3.x混合使用

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

迁移到Hibernate将需要一段时间,因为应用程序中超过100个表使用实体bean。所以我正在寻找一种分阶段的方法,在这种方法中,如果可能的话,两个持久性策略并行运行,理想情况是同时在同一个表上运行。

我的问题是,结合这两种持久性策略有什么缺陷(如果有的话)?他们会彼此相处吗?

回答

2

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

对于交易,他们都应该使用由容器提供的JTA,因此它应该是安全的。

+0

这同样适用于第一级缓存(会话) – 2008-10-16 03:47:15

2

我想要真正小心的事情是使用Hibernate会话。 Hibernate缓存了一些东西,这可能会阻碍。

坦率地说,我会建议,如果你采用Hibernate,完全删除实体bean。让你的Hibernate在会话bean中工作,并让会话bean管理你的事务。

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

+0

实际上,我们将使用Hibernate作为提供程序对JPA进行编程,但由于我们无法即时迁移100个BMP实体bean,因此有关并行运行这两种技术的问题依然存在。 – 2011-03-20 22:16:12