2013-05-15 32 views
0

我正在創建一個三層應用程序,並且我遇到了一個問題。
我有一個數據庫,保存有關客戶的數據以及代表我的應用中的客戶實體的類。問題是,我不知道我是否應該在數據層應用層中實例化客戶實體。我應該在三層應用程序中從哪個數據庫實例化實體?

創建於應用層似乎更正確的客戶實體,因爲數據層應該只查詢數據,但是這將意味着我需要在使用「原始/未格式化的」數據應用層並且看起來不太好。

任何人都知道「正確」的方式來處理這個問題嗎?

回答

1

數據庫保持狀態,並且在可以查詢之前必須保存狀態。一個新的客戶實體由應用程序實例化,然後發送給Persistance進行保存。當應用程序需要來自數據庫的特定客戶時,持久性(通常是存儲庫)會恢復客戶。

注意,客戶是一個商業實體,相關但不與客戶表或僅僅是從視圖的數據庫建模點的數據結構的查詢進行優化一個客戶ORM實體相同。

+0

所以你說我應該在應用程序層中實例化一個客戶時,它會被保存,並在數據層,當它被從數據庫中恢復? – DeadlyJesus

+0

我在說一個新客戶在你需要它的地方實例化,99.99%的時間你將在App層需要它,數據層只是保存/恢復實體。 – MikeSW

+0

是的,但是當數據層恢復它實例化它的實體時,不是嗎?我的意思是在我的db連接類中,我必須寫這樣的'Customer c = new Customer(data);'。或者我應該將該代碼放在App層中,並使用從Data層獲得的數據,如下所示:Data d = dbConnector.getCustomerData();客戶c =新客戶(d);'? – DeadlyJesus

相關問題