在重構M層代碼以前,我們復習下前面我們各層的調用。
以刪除數據為例, 我們完成一個刪除操作的時序圖如下:

通過上圖,不難發現,在進行一般數據增刪改查的操作時,server層只是起到數據轉發的作用。當由C層獲取到數據后,直接調用了實體層中的相應的方法。不錯,如果不進行一些其它的邏輯的運算,server層在這里是可有可無的。但在實現的軟件開發中,我們很少接觸到只有簡單的增刪改查,所以server層的存在是有必要的。
我們在看實體層。我們在前面說過,實體(entity),其實對應的是數據表。即實體類中的第一項信息,都需要與數據庫中的數據表相對應。
而在上圖中,我們在實體層中,卻增加了`getTeacherById()`及`delete()`方法。而數據表只能對應字段及對這些字段設置的set與get方法。所以,從規范性的角度上來講,非set/get方法是不能寫在實體類中的。
> hibernate還支持使用xml配置文件對實體進行定義,而xml文件中是不可能存在CURD方法,所以CURD方法必須由實體層脫離。
鑒于此,我們引入dao(data access object),數據訪問對象層。我們不適合寫在實體層中的語句,改寫到DAO層。
改寫后,我們在進行刪除操作時,時序圖如下:

此時,我們在數據訪問DAO層中,寫入具體的CURD的方法。而在實體entity層中,寫入實體的屬性。這樣做使得代碼更加的清晰,分工更加的明確,冗余度更低,代碼更易維護。對實體entity層或是數據訪問DAO層進行更改時,對另外一層不造成影響。更加有利于團隊開發。
<hr />
將教師實體中的CURD方法,轉移至數據訪問dao層。將調用dao層,來實現數據的CURD操作.
- README
- 第一章:準備
- 第二章:Hello World!
- 第一節:查看工程文件
- 第二節:JDK、JRE與環境變量
- 第三節:index.jsp
- 第三章:Hello Struts
- 第一節:Web.xml
- 第二節:單入口
- 第三節:Hello Struts
- 第四節:觸發C層
- 第四章:建立數據表
- 第一節:建立實體類
- 第二節:測試一
- 第三節:測試二
- 第四節:引入Hibernate
- 第五節:配置Hibernate
- 第六節:建立連接
- 第七節:實體類映射數據表
- 第八節:完善數據表
- 第五章:教師管理
- 第一節:增加數據--add
- 第二節:增加數據--save
- 1 獲取傳入數據數據
- 2 數據寫入測試
- 3 對接C層
- 第三節:數據列表
- 1 獲取數據
- 2 重構代碼
- 3 C層對接--初始化
- 4 C層添加數據
- 5 V層顯示數據
- 6 獲取數據庫中數據
- 7 顯示性別
- 8 分頁
- 9 條件查詢
- 第四節:修改數據
- 1 edit
- 2 update
- 第五節:刪除數據
- 第六節:總結
- 第六章:重構C層
- 第一節:繼承ActionSupport類
- 第二節:數據驗證
- 第七章:前臺分離(前臺)
- 第一節:環境搭建
- 第二節:運行環境
- 第三節:共享開發環境
- 第四節:生產環境
- 第八章:前臺開發(前臺)
- 第一節:本地化
- 第二節:教師列表
- 1 引入M層
- 2 模擬后臺返回數據
- 3 C與M對接
- 4 C與V對接
- 第九章:前后臺對接(前后臺)
- 第一節:后臺輸出json(后臺)
- 第二節:對接前臺(全棧)
- 第二節:對接API(前臺)
- 第二節:跨域請求(后臺)
- 第三節:重構代碼(前臺)
- 第十章:重構后臺M層
- 第一節:數據訪問DAO層
- 第二節:項目整體重構
- 第十一章:用戶登陸(前后臺)
- 第一節:制定規范
- 第二節:定制測試用例
- 第三節:后臺輸入測試代碼(后臺)
- 第四節:postman(后臺)
- 第五節:新建用戶登陸模塊(前臺)
- 第六節:代碼重構(前臺)
- 第十二章:班級管理(前后臺)
- 第一節:班級列表
- 1 原型開發
- 2 制定規范
- 3 后臺對接開發
- 4 前臺對接開發
- 第二節:Add
- 1 原型開發
- 2 制定規范
- 3 后臺對接開發
- 4 前臺對接開發
- 第三節:Save
- 1 制定規范
- 2 后臺對接開發
- 3 前臺對接開發
- 第四節:Edit
- 1 原型開發
- 2 制定規范
- 3 后臺對接開發
- 4 前臺對接開發
- 第五節:Update
- 1 制定規范
- 2 后臺對接開發
- 3 前臺對接開發
- 第六節:Delete
- 1 制定規范
- 2 后臺對接開發
- 3 前臺對接開發
- 第七節:小結
- 第十三章:班級管理(API)
- 第一節:ER圖
- 第二節:create
- 1 實體層
- 2 dao層
- 3 service(server)層
- 4 action層
- 第三節:ManyToOne
- 第四節:Read
- 1 service(server)層
- 2 action層
- 第五節:update
- 1 service(server)層
- 2 action層
- 第六節:update
- 第十四章:重構服務層