java分層概念淺解

各層之間的常用框架

項目分層使得各層之間解耦,開發更靈活。

隨之各層之間出現了不同的框架,更加方便快速的開發。

表示層的框架:struts2、SpringMVC

業務層框架:Spring

dao層框架:mybaties、hibernate

這是現如今兩種主流架構:SSM(sringmvc+spring+mybaties)和SSH(struts2+spring+hibernate)

 mvc

表示層的MVC架構是指(Model +view+controller)這樣開發更靈活,快速。

model(是指數據對象,我們將數據封裝進對象裏,方便各層之間傳遞)

view(是指頁面,包括jsp、html、css、javascript以及頁面上的圖片、視頻等)

controller(是指controller控制器,負責請求處理,頁面轉發等)


分類

service:

  業務層

action

控制器層

DAO(Data Access Object)

數據訪問層

Action層,Service層,Model層和Dao層的功能區分

首先這是現在最基本的分層方式,結合了SSH架構。

一般java都是三層架構 數據訪問層(dao) 業務邏輯層(biz 或者services) 界面層(ui)

Service(biz)層

引用對應的Dao數據庫操作,在這裏可以編寫自己需要的代碼(比如簡單的判斷)。

action控制器層

是業務層的一部分,是一個管理器 (總開關)(作用是取掉轉)(取出前臺界面的數據,調用biz方法,轉發到下一個action或者頁面)。

model模型層:

一般是實體對象(把現實的的事物變成java中的對象)作用是一暫時存儲數據方便持久化(存入數據庫或者寫入文件)而是 作爲一個包裹封裝一些數據來在不同的層以及各種java對象中使用  

dao數據訪問層

就是用來訪問數據庫實現數據的持久化(把內存中的數據永久保存到硬盤中 ).使用了Hibernate連接數據庫、操作數據庫(增刪改查)。

java中dao層和biz層的區別

我們都知道,標準主流現在的編程方式都是採用MVC綜合設計模式,MVC本身不屬於設計模式的一種,它描述的是一種結構,最終目的達到解耦,解耦說的意思是你更改某一層代碼,不會影響我其他層代碼,如果你會像spring這樣的框架,你會了解面向接口編程,表示層調用控制層,控制層調用業務層,業務層調用數據訪問層。初期也許都是new對象去調用下一層,比如你在業務層new一個DAO類的對象,調用DAO類方法訪問數據庫,這樣寫是不對的,因爲在業務層中是不應該含有具體對象,最多只能有引用,如果有具體對象存在,就耦合了。當那個對象不存在,我還要修改業務的代碼,這不符合邏輯。好比主板上內存壞了,我換內存,沒必要連主板一起換。我不用知道內存是哪家生產,不用知道多大容量,只要是內存都可以插上這個接口使用。這就是MVC的意義。 接下來說你感覺service的意義,其實因爲你現在做東西分層次不是那麼嚴格,在一個你們做東西業務本身也少,舉個最簡單的例子,你做一個分頁的功能,數據1000條,你20條在一個頁,你可以把這個功能寫成工具類封裝起來,然後在業務層裏調用這個封裝的方法,這纔是業務裏真正幹得事,只要沒訪問數據庫的,都要在業務裏寫。 

什麼是pojo類?

簡單的Java對象(Plain Old Java Objects)實際就是普通JavaBeans,使用POJO名稱是爲了避免和EJB混淆起來, 而且簡稱比較直接.

 其中有一些屬性及其getter setter方法的類,有時可以作爲value object或dto(Data Transform Object)來使用.當然,如果你有一個簡單的運算屬性也是可以的,但不允許有業務方法,也不能攜帶有connection之類的方法。 

pojo類和vo類的區別

vo有兩種說法,一個是viewObject,一個是valueObject..

      從前者來說,它只負責封裝頁面傳遞過來的數據,這和PO有些不同..

  就拿struts1來說,ActionForm就是一個典型的viewObject. 而valueObject是頁面與頁面之間的傳遞時保存值的對象....

  總的來說,PO是最終傳給BO以及BO傳個DAO的東西,他很多情況下與我們真正的數據庫表想對應.

  而viewObject是一個頁面上提交後的數據,不一定完全和PO的屬性相同....

PO,VO,TO,BO,DAO,POJO的解釋

PO

persistant object持久對象

PO可以嚴格對應數據庫表,一張表對映一個PO。

也可以對應數據庫中某個表中的一條記錄,多個記錄可以用PO的集合。PO中應該不包含任何對數據庫的操作.

好處是可以把一條記錄作爲一個對象處理,可以方便的轉爲其它對象。

在o/r映射的時候出現的概念,如果沒有o/r映射,沒有這個概念存在了。通常對應數據模型(數據庫),本身還有部分業務邏輯的處理。

可以看成是與數據庫中的表相映射的java對象。

最簡單的PO就是對應數據庫中某個表中的一條記錄,多個記錄可以用PO的集合。PO中應該不包含任何對數據庫的操作。 

BO:

business object:業務對象

主要作用是把業務邏輯封裝爲一個對象。

從業務模型的角度看,見UML元件領域模型中的領域對象。

封裝業務邏輯的java對象,通過調用DAO方法,結合PO,VO進行業務操作。

這個對象可以包括一個或多個其它的對象。比如一個簡歷,有教育經歷、工作經歷、社會關係等等。我們可以把教育經歷對應一個PO,工作經歷對應一個PO,社會關係對應一個PO。建立一個對應簡歷的BO對象處理簡歷,每個BO包含這些PO。這樣處理業務邏輯時,我們就可以針對BO去處理。

VO :

value object值對象

ViewObject表現層對象主要對應界面顯示的數據對象。

通常用於業務層之間的數據傳遞,和PO一樣也是僅僅包含數據而已。

但應是抽象出的業務對象,可以和表對應,也可以不,這根據業務的需要.個人覺得同DTO(數據傳輸對象),在web上傳遞。

對於一個WEB頁面,或者SWT、SWING的一個界面,用一個VO對象對應整個界面的值。

TO:

Transfer Object,數據傳輸對象

在應用程序不同tie(關係)之間傳輸的對象

DTO :

Data Transfer Object數據傳輸對象

主要用於遠程調用等需要大量傳輸對象的地方。

比如我們一張表有100個字段,那麼對應的PO就有100個屬性。但是我們界面上只要顯示10個字段,客戶端用WEB service來獲取數據,沒有必要把整個PO對象傳遞到客戶端,這時我們就可以用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端以後,如果用這個對象來對應界面顯示,那此時它的身份就轉爲VO

POJO :

plain ordinary java object 簡單java對象

個人感覺POJO是最常見最多變的對象,是一箇中間對象,也是我們最常打交道的對象。

就是說在一些Object/Relation Mapping工具中,能夠做到維護數據庫表記錄的persisent object完全是一個符合Java Bean規範的純Java對象,沒有增加別的屬性和方法。我的理解就是最基本的Java Bean,只有屬性字段及setter和getter方法!。

一個POJO持久化以後就是PO直接用它傳遞、傳遞過程中就是DTO直接用來對應表示層就是VO

DAO:

data access object數據訪問對象

這個大家最熟悉,和上面幾個O區別最大,基本沒有互相轉化的可能性和必要.主要用來封裝對數據庫的訪問。通過它可以把POJO持久化爲PO,用PO組裝出來VO、DTO

是一個sun的一個標準j2ee設計模式,這個模式中有個接口就是DAO,它負持久層的操作。

爲業務層提供接口。此對象用於訪問數據庫。通常和PO結合使用,DAO中包含了各種數據庫的操作方法。通過它的方法,結合PO對數據庫進行相關的操作。夾在業務邏輯與數據庫資源中間。配合VO, 提供數據庫的CRUD操作...

O/R Mapper

對象/關係 映射 

定義好所有的mapping之後,這個O/R Mapper可以幫我們做很多的工作。

通過這些mappings,這個O/R Mapper可以生成所有的關於對象保存,刪除,讀取的SQL語句,我們不再需要寫那麼多行的DAL代碼了。








發佈了4 篇原創文章 · 獲贊 17 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章