關於表現層、業務層、持久層及他們所包含的物件之間的關係的理解,高手指點

wilson751發表於2006-01-02
我自己在做一個小專案,表現層用的是struts,用hibernate封裝JDBC程式碼,最後端用的資料庫。在實際做的過程中,遇到了一個問題:就是資料在各層之間傳遞的問題,原來沒有接觸過類似的問題,下面是自己的一點理解,請高手指點!

舉個例子:查詢一個使用者是否已經註冊,在一個Action中控制流程,FormBean物件是表現層的資料。因為表單資料要儲存到DB中,所以,我做了一個類User和DB中相應的表對應。表單提交的資料,和資料庫中儲存的資料不完全對應,例如:提交的是使用者名稱、密碼,而資料庫中對應的表中,還有使用者型別欄位。

另外,表現層資料一般不應該直接傳遞到業務層,所以,我將從form提交的表單資料取出來,儲存到一個User物件中,當然,User物件的使用者型別欄位是null。此時,這個User物件是一個通用的資料結構,對錶現層和業務層解耦。

對資料庫操作部分,採用了DAO模式,在一個DAO類中進行DB操作,並把這個User物件作為引數傳遞到DAO類的方法中,這時,此User物件在業務層和持久層之間的傳遞,這時,我認為。就不用在業務層和持久層之間再建立一個新的通用的資料結構,對業務層和持久層解耦。

查詢結束後,如果使用者已經註冊,則返回使用者資料。這時,把從資料庫中得到的資料,儲存到一個User物件中,穿過業務層,並在Action中,將User物件中的資料儲存在session中,然後,在jsp頁中顯示。

如果說,我想實現的是在表現層、業務層,業務層、持久層之間建立通用資料結構,實現各層間解耦,那麼,我上面的做法是否正確,或是否合理,請高手指點,多謝!

相關文章