2012-08-07 52 views
1

我有一個POJO類與數據庫中的每個表休眠註釋。我的數據庫也有一個HibernateUtility,它創建SessionFactory。休眠(最好)最常見的結構

我應該爲每個數據庫表或每個數據庫管理器創建一個管理器嗎?

經理下我的意思是一個類,所有的交易,CRUD。

哪給了我最好的表現?

回答

1

通常每個表都有一個DAO是有幫助的。您無需編寫大量代碼,因爲您可以使用generic dao。性能明智:請記住,您使用的是hibernate,而hibernate並沒有將性能作爲其支柱之一,但hibernate通常會縮短開發時間。如果您需要性能,請嘗試使用myBatis或者純粹的jdbc。

1

我更喜歡在數據庫中的每個表都有一個DAO類。我實際上有一個抽象的DAO對象,它執行所有通常的CRUD操作,然後根據需要重寫或添加其他查詢方法。如果它全部在一個DAO中,我將無法重新使用我的CRUD邏輯。

其實,我很驚訝沒有一個標準的抽象CRUD實現在那裏,每個人都使用 - 這是微不足道的寫作(也許有一個保持良好的?)。我的通用DAO還具有獲取EntityManagerFactory的便捷方法 - 在不注入這些事物的Java SE環境中很有用。

1

表現與您擁有的課程數量無關。

每個數據庫表的管理器太多:業務用例通常涉及多個表。

整個數據庫的管理器太少:讓一個類中的應用程序的所有業務邏輯不可維護。

一個應用程序通常有一組用例:用戶管理,通知管理等。我將這些用作將邏輯分成類的一種方式。另外,請注意,業務邏輯(這是我認爲應該在您的經理類中)應與數據訪問邏輯(DAO,存儲庫)分開。 CRUD通常是DAO的職責,使業務邏輯和事務分界在服務(管理器)層完成。