2013-03-12 45 views
0

在我的應用程序中,我需要創建一個複雜的查詢,它在多個表上運行,並返回所有表中的信息。DAO模式和多個表中的選擇

如何在這種情況下使用DAO模式?

當你有一個CRUD的DAO它非常簡單,但是當你不得不處理複雜的查詢時,這是令人困惑的。

我是否創建一個對象來表示此特定業務操作的所有表和DAO的集合信息?

或者我應該爲每個表都有一個DAO,並在每個DAO返回一個對象時分隔這個查詢,最後我會有很多代表這個複雜查詢的對象?

或者還有另一種選擇?

DAO類應該直接鏈接(表示)與我的數據庫中的表或業務類?

在此先感謝!

回答

0

您或許可以解釋多一點你的業務對象是什麼他們的關係是...

但據一家集設計,一個常見的選擇是您要的每個表創建並映射一個類CRUD來自。這些類將具有與其各自表中的列匹配的屬性。

無論你是否爲每個表創建一個DAO都取決於你,但你也可以(可能取決於你的實現語言)創建一個實現了CRUD方法的通用DAO。

考慮到更復雜的實體關係的另一種設計是創建視圖&存儲過程並映射到這些。這會給你創建一個對象的能力,這個對象不是用特定的表格清晰地表示的。這種方法具有一些優點(例如,您可以更好地將數據庫的設計封裝在遠離應用程序的位置),但也可能存在缺陷(將業務邏輯移入數據庫是您可能不需要的)。

2

你必須權衡下列因素,然後才能說哪種模式有用。 例如:

  1. 多少表會被訪問,以及如何重要的是 表現?
  2. 此對象是隻讀還是需要更新?

考慮到這些因素,如果存在性能需求並且CRUD需要在此對象上執行,則可以爲此對象選擇單個DAO。 而且,如果它的只讀和性能不是主要的限制,你可以從多個DAO構造這個對象。