2013-04-13 42 views
0

人們,我們正在開發一個Java遊戲服務器。首先是JPA/Spring Data/Hibernate,然後我們放棄了(感謝上帝),我們決定直接使用Hibernate。在這一點上,我可以說我們不會改變數據訪問技術,純粹的Hibernate和本地查詢(如果需要的話)。數據訪問抽象與休眠


所以我的問題是關於在這一點上正確的數據抽象。是否有任何意義去與Repository模式或爲上帝的緣故把它放棄只提供SessionTransaction處理提供某種Unit of Work模式?

  • Repository的情況下,會有太多的實現所需要
  • Unit of Work情況下它自己的方法,我們揭露休眠Session,但提供了靈活性,並在同一時間封裝Transaction管理

每種方式的優缺點是什麼?建議的其他策略? DAO模式可以作爲解決方案,還是直接使用Session更好?

回答

1

我會去與Ayende's advice -
Session數據庫抽象;你不需要abstraction on top of your abstraction

+1

這就是燈光在設計模式的墳墓中的光芒。謝謝。 – OneMoreVladimir

+0

我無法相信Ayende在這篇文章中做了多少*邪惡*。所有這些開發者都將自己綁定到一個ORM上,只是因爲他們不瞭解一個微不足道的模式。存儲庫抽象持久性作爲一個整體,而不僅僅是一個rdbms。我想沒有人會使用NOSQl數據庫,並且沒有人需要可以使用Redis或MongoDb以及rdbms的應用程序。 – MikeSW

+0

@MikeSW我不同意。如果您轉向nosql解決方案,那麼請創建您的存儲庫。不要因爲可能發生或可能不發生的事情而提前限制自己。你的論點是一種不成熟的優化 –