2012-07-12 100 views
1

給予一定的背景,您是否推薦JDBC或JPA用於大型應用程序?

  1. 我們有相當大的架構,包含上百個複雜的人際關係表的。
  2. 數據量也很大,數據的性質也相對較爲敏感(財務)
  3. 當前架構是 - Java EE:會話Bean,DAO(JDBC)調用存儲過程。
  4. 在數據庫級別上,我們有一些複製機制來保持數據與前端數據庫和後端數據庫(託管在不同的盒子上)的數據一致。因此,應用程序將需要從前端數據庫查找(讀取)數據,如果不可用,請查看後端數據庫。因此,按照JPA的條款,我們可能需要兩個不同的EntityManagers實例。

可擴展性和性能都因爲系統仍然在增長最關心的問題。

利用上述信息,沒有任何人對是多麼可行遷移到使用持久性框架如JPA應用程序的任何輸入?在上述情況下,持久性框架有哪些挑戰?

+0

沒有「兩個不同的EntityManagers實例」但是「兩個持久性單元」 – SJuan76 2012-07-12 18:56:52

+3

我的建議是:對於一個體積如此之大(似乎很關鍵)的系統,不要去尋找互聯網上的建議。聘請一些有經驗的顧問。 – SJuan76 2012-07-12 18:57:53

回答

1

我的經驗是,一旦你過去幾頁,然後你結束了某種框架。這可以像交換數據地圖一樣簡單,但對於使用類型安全的Java來說,可能會導致某種形式的映射框架。 Hibernate通過其JPA註釋是迄今爲止在Java領域最知名的,但當然還有其他實現。我也對Grails有了很好的體驗,在實際中,Hibernate(默認情況下)使用了Hibernate,但當然這是一個完整的堆棧。

我建議你的高級團隊需要一段時間才能從至少一些最有前途的替代的工作,一些例子,你做任何事情之前。

3

我@ SJuan76同意,你得到前人的精力有人採取了深入探討您的架構,可提供更好的建議。但在任何情況下,這裏有一些提示:

1)啓動與映射。將您的實體映射爲「正確的OOP方式」,並嘗試通過調整映射來達到相同的模式。如果關係複雜,你可能會面臨一些阻礙,在映射階段最好處理它(而不是映射PoC的一小部分)。

2)不要擔心Hibernate的性能。 Hibernate可能比任何內部JDBC框架更快。但是,如果您決定將業務邏輯從存儲過程轉移到Java代碼,請查看性能更改。在轉換它們時,您可能不得不轉換思維方式,因爲在SP內處理大量數據通常比將大量數據傳送到應用層並在此處處理更快。

3)花些時間閱讀Hibernate的書籍和文檔。真。大多數時候人們抱怨Hibernate,這是因爲他們不知道幕後發生了什麼。

:-)

1

你提到你有存儲過程祝你好運,那麼就會出現一個問題,你希望你的項目或不重新實現最。

如果你不想這樣做,那麼忘掉JPA或Hibernate,在這種情況下,我建議你使用MyBatis(或iBatis)。

相關問題