2008-09-18 24 views
3

我在相當大的J2EE項目上使用EJB 3,默認情況下,Netbeans將實體Bean的持久提供者設置爲TopLink。還有就是要提供者更改爲以下,甚至添加新的持久性庫的一個選項:我應該使用哪個EJB 3 persisent提供程序?

  • 休眠
  • KODO
  • OpenJPA的

哪個持久性提供你喜歡使用?使用另一個提供商有什麼好處?

儘管TopLink看起來不錯,但我無法找到關於如何控制緩存等的很好的文檔。任何幫助將不勝感激。

回答

7

即使世界只有兩個JPA提供商我會考慮使用:

如果你要堅持標準JPA我將EclipseLink。儘管Toplink Essentials是JPA 1.0的參考實現,但EclipseLink基本上繼承了TopLink Essentials代碼,並且將成爲JPA 2.0的參考實現(並且在Glassfish V3發佈時捆綁;預計2009年5月在JavaOne上發佈)。 TopLink Essentials是Oracle的商業TopLink產品的一個有點癱瘓的版本,但EclipseLink基本上具有TopLink的所有功能。

另一種選擇顯然是Hibernate。它廣泛使用和成熟,但不是我所見過的無問題。例如,最後我看到Hibernate對具有多個一對多渴望關係的實體有問題。我不知道Hibernate是否與EclipseLink的批量查詢提示等價,但它是處理這類問題的一個非常有用的功能。

Hibernate當然也支持標準的JPA。 Hibernate的最大優點是,如果你對它的工作方式有疑問,Google搜索很可能會找到答案。

我真的不會考慮除了上述兩個供應商以外的任何東西。

+2

你爲什麼不考慮OpenJPA的。每個實施都有其優點和缺點...... – b3bop 2012-01-18 00:17:29

2

我會強烈建議Hibernate進行,原因如下:

  • 最廣泛使用和尊重在Java世界開源持久層;巨大的活躍社區以及大量關鍵任務應用程序的使用。
  • 如果您希望與您的其他應用程序(如Spring等)建立不同的路線,那麼您不會將自己與J2EE或某個特定的供應商聯繫在一起,因爲Hibernate仍然會表現出色。
2

我發現Hibernate是相當有據可查的,並且得到各種緩存技術的支持。在非JPA的情況下,我也比其他人使用了它多一點,所以也許我有點偏向於它。

我用TopLink Essentials嘗試過的幾個小玩具項目也做得非常好,但我從未進入緩存或任何需要提供程序特定文檔的東西。總的來說,我認爲對此的社區支持較少,這是我最終使用Hibernate的一部分原因。

1

我使用Hibernate。它非常成熟,效果非常好。我個人沒有使用其他任何人,但我知道Hibernate是其中功能最全面的JPA提供者之一。同樣因爲有這麼多人在使用它,幾乎所有我遇到的問題,我都可以通過一些Google搜索很快找到解決方案。

0

我最近在一個使用Kodo JPA框架構建的大型企業應用程序上工作。由Kodo生成的SQL一般不具有大量數據的可伸縮性。在我看來,它產生了太多的外連接查詢。考慮到在嘗試縮放kodo時我們必須改變多少映射,我不推薦將它用於大型企業應用程序。即使是我們與之交談的Oracle代表也都試圖將客戶從科多身上趕回TopLink。 Oracle可能會在未來淘汰科多。

相關問題