2008-09-16 74 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