關於DAO、Domain、Service三層


DAO層 

Data Access Object

操作單表,不涉及復雜邏輯,主要是表的增刪改查操作,完全根據Domain的要求來查詢數據,會對每個要操作的數據庫表定義一個Dao,對具體的操作要定義一個類似函數說明。

    eg: UppCodeInfo findByCodeNo(String codeNo);JPA方式

Domain層

考慮業務邏輯,例如過濾條件,放行或者返回,以及數據的處理,為調用dao層做好准備,一個Domain可以調用一個或一組相關的Dao層.

    eg:@Entity
         @Table(name = "upp_code_info")
         public class UppCodeInfo {屬性....對應數據庫表中的字段,要在后面生成set(),get()方法}

Service層

調用一個或一組Domain層,主要是展現需要開放出去的接口,其中domain層不是所有的接口都要再service層 體現的,可能僅在service層開放幾個接口出去,此外,主要接口需要對接受的參數要盡量的擴大化,也就是說可以容納各種類型的參數的接入 (Object),然后需要在service層做好轉換,以備domain層使用。具體的邏輯實現在此層實現。即函數在該層實現。

controller層

作用在於過濾參數、和部分加解密和簡單的邏輯處理 ,或者對於頁面數據的封裝,你可以理解為一個入口而service只需要處理復雜業務。

總結

底層數據庫(具體數據的存儲)→ DAO(從表中讀取數據)→ Domain(將表與實體進行關聯,進行實體的定義,set,get方法的定義) →  service(實現邏輯,進行數據關聯,方便底層取數據)→ controller(方便為前段提供數據)。

 

 

附:三層架構中的層

DAL:Data Access Layer

數據訪問層,對原始數據(數據庫或者文本文件等存放數據的形式)的操作層,而不是指原始數據,也就是說,是對數據的操作,而不是數據庫,具體為業務邏輯層或表示層提供數據服務。

BLL:Business Logic Layer,也稱作BIZ層

業務邏輯層,主要是針對具體的問題的操作,也可以理解成對數據層的操作,對數據業務邏輯處理。如果說數據層是積木,那邏輯層就是對這些積木的搭建。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM