java分層架構(gòu)概念

service是業(yè)務(wù)層,DAO (Data Access Object) 數(shù)據(jù)訪問

781407-20151031081225997-1073983018.jpg

1.JAVA中Action層, Service層 矛双,modle層 和 Dao層的功能區(qū)分炫加?(下面所描述的service層就是biz)

  首先這是現(xiàn)在最基本的分層方式蛹找,結(jié)合了SSH架構(gòu)沈矿。modle層就是對應(yīng)的數(shù)據(jù)庫表的實體類惦辛。

Dao層是使用了Hibernate連接數(shù)據(jù)庫、操作數(shù)據(jù)庫(增刪改查)悦穿。
以上的Hibernate攻礼,Struts,都需要注入到Spring的配置文件中栗柒,Spring把這些聯(lián)系起來礁扮,成為一個整體。
其他答案:
  action 是業(yè)務(wù)層的一部分瞬沦,是一個管理器 (總開關(guān))(作用是取掉轉(zhuǎn))(取出前臺界面的數(shù)據(jù)太伊,調(diào)用biz方法,轉(zhuǎn)發(fā)到下一個action或者頁面)
模型成(model)一般是實體對象(把現(xiàn)實的的事物變成java中的對象)作用是一暫時存儲數(shù)據(jù)方便持久化(存入數(shù)據(jù)庫或者寫入文件)而是 作為一個包裹封裝一些數(shù)據(jù)來在不同的層以及各種java對象中使用
dao是數(shù)據(jù)訪問層 就是用來訪問數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)的持久化(把內(nèi)存中的數(shù)據(jù)永久保存到硬盤中 其他答案:
Action是一個控制器 Dao主要做數(shù)據(jù)庫的交互工作 Modle 是模型 存放你的實體類 Biz 做相應(yīng)的業(yè)務(wù)邏輯處理

2.java中dao層和biz層的區(qū)別是什么逛钻?

呵呵僚焦,這個問題我曾經(jīng)也有過,記得以前剛學(xué)編程的時候绣的,都是在service里直接調(diào)用dao叠赐,service里面就new一個dao類對象,調(diào)用屡江,其他有意義的事沒做芭概,也不明白有這個有什么用,參加工作久了以后就會知道惩嘉,業(yè)務(wù)才是工作中的重中之重罢洲。
  我們都知道,標(biāo)準(zhǔn)主流現(xiàn)在的編程方式都是采用MVC綜合設(shè)計模式文黎,MVC本身不屬于設(shè)計模式的一種惹苗,它描述的是一種結(jié)構(gòu),最終目的達(dá)到解耦耸峭,解耦說的意思是你更改某一層代碼桩蓉,不會影響我其他層代碼,如果你會像spring這樣的框架劳闹,你會了解面向接口編程院究,表示層調(diào)用控制層,控制層調(diào)用業(yè)務(wù)層本涕,業(yè)務(wù)層調(diào)用數(shù)據(jù)訪問層业汰。初期也許都是new對象去調(diào)用下一層,比如你在業(yè)務(wù)層new一個DAO類的對象菩颖,調(diào)用DAO類方法訪問數(shù)據(jù)庫样漆,這樣寫是不對的,因為在業(yè)務(wù)層中是不應(yīng)該含有具體對象晦闰,最多只能有引用放祟,如果有具體對象存在,就耦合了鹅髓。當(dāng)那個對象不存在舞竿,我還要修改業(yè)務(wù)的代碼,這不符合邏輯窿冯。好比主板上內(nèi)存壞了骗奖,我換內(nèi)存,沒必要連主板一起換醒串。我不用知道內(nèi)存是哪家生產(chǎn)执桌,不用知道多大容量,只要是內(nèi)存都可以插上這個接口使用芜赌。這就是MVC的意義仰挣。 接下來說你感覺service的意義,其實因為你現(xiàn)在做東西分層次不是那么嚴(yán)格缠沈,在一個你們做東西業(yè)務(wù)本身也少膘壶,舉個最簡單的例子错蝴,你做一個分頁的功能,數(shù)據(jù)1000條颓芭,你20條在一個頁顷锰,你可以把這個功能寫成工具類封裝起來,然后在業(yè)務(wù)層里調(diào)用這個封裝的方法亡问,這才是業(yè)務(wù)里真正干得事官紫,只要沒訪問數(shù)據(jù)庫的,都要在業(yè)務(wù)里寫州藕。
  再有不明白的追問束世,這是經(jīng)驗問題,呵呵床玻,其實以后你就會懂毁涉。只是剛開始寫的代碼都是有個請求,我就去數(shù)據(jù)庫取锈死,業(yè)務(wù)幾乎沒有薪丁。
其他優(yōu)秀答案:

(1)、假設(shè)現(xiàn)在你做這個功能會用到user表和權(quán)限表馅精,那么你前臺的頁面訪問action严嗜,action再去調(diào)用用戶模塊service,用戶模塊service判斷你是操作user表還是權(quán)限表洲敢,如果你操作的是user表則service的實現(xiàn)類就去調(diào)用userDAO漫玄。如果是操作的是權(quán)限表則調(diào)用權(quán)限的DAO

(2)、也就是說DAO一定是和數(shù)據(jù)庫的每張表一一對應(yīng)压彭,而service則不是睦优。明白的沒?其實你一個項目一個service和一個DAO其實也一樣可以操作數(shù)據(jù)庫壮不,只不過那要是表非常多汗盘,出問題了,那找起來多麻煩询一,而且太亂了

(3)隐孽、好處就是你的整個項目非常系統(tǒng)化,和數(shù)據(jù)庫的表能一致健蕊,而且功能模塊化菱阵,這樣以后維護(hù)或者改錯比較容易,性能也高一些

至于你說的為什么要用service層封裝缩功,我認(rèn)為:一般來說晴及,某一個程序的有些業(yè)務(wù)流程需要連接數(shù)據(jù)庫,有些不需要與數(shù)據(jù)庫打交道而直接是一些業(yè)務(wù)處理嫡锌,這樣就需要我們整合起來到service中去虑稼,這樣可以起到一個更好的開發(fā)與維護(hù)的作用琳钉,同時也是MVC設(shè)計模式中model層功能的體現(xiàn)

3.java中的action是什么,DAO又是什么蛛倦?

Action類 是[獲得Form表單數(shù)據(jù)槽卫,并處理邏輯的類
  DAO(Data Access Object) 是一個接口實現(xiàn)[通過SessionFactory獲得操作數(shù)據(jù)庫的會話,并實現(xiàn)一些基本的刪除 添加 修改數(shù)據(jù)胰蝠,在servlet中更實際化業(yè)務(wù)操作]

4. 什么是Pojo類?

簡單的Java對象(Plain Old Java Objects)實際就是普通JavaBeans,使用POJO名稱是為了避免和EJB混淆起來, 而且簡稱比較直接. 其中有一些屬性及其getter setter方法的類,有時可以作為value object或dto(Data Transform Object)來使用.當(dāng)然,如果你有一個簡單的運算屬性也是可以的,但不允許有業(yè)務(wù)方法,也不能攜帶有connection之類的方法震蒋。

5.pojo類和vo類分別是什么

vo有兩種說法,一個是viewObject,一個是valueObject..;就拿前者來說吧,它只負(fù)責(zé)封裝頁面?zhèn)鬟f過來的數(shù)據(jù),這和PO有些不同..
就拿struts1來說,ActionForm就是一個典型的viewObject. 而valueObject是頁面與頁面之間的傳遞時保存值的對象....
總的來說,PO是最終傳給BO以及BO傳個DAO的東西,他很多情況下與我們真正的數(shù)據(jù)庫表想對應(yīng).
  而viewObject是一個頁面上提交后的數(shù)據(jù),不一定完全和PO的屬性相同....

pojo與DTO的區(qū)別

ational Mapping(對象關(guān)系映射)的縮寫茸塞。java(PO,VO,TO,BO,DAO,POJO)解釋

PO(persistant object) 持久對象

在o/r映射的時候出現(xiàn)的概念,如果沒有o/r映射查剖,沒有這個概念存在了钾虐。通常對應(yīng)數(shù)據(jù)模型(數(shù)據(jù)庫),本身還有部分業(yè)務(wù)邏輯的處理∷褡可以看成是與數(shù)據(jù)庫中的表相映射的java對象效扫。最簡單的PO就是對應(yīng)數(shù)據(jù)庫中某個表中的一條記錄,多個記錄可以用PO的集合直砂。PO中應(yīng)該不包含任何對數(shù)據(jù)庫的操作菌仁。

VO(value object) 值對象

通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞,和PO一樣也是僅僅包含數(shù)據(jù)而已静暂。但應(yīng)是抽象出的業(yè)務(wù)對象,可以和表對應(yīng),也可以不,這根據(jù)業(yè)務(wù)的需要.個人覺得同DTO(數(shù)據(jù)傳輸對象),在web上傳遞济丘。

TO(Transfer Object),數(shù)據(jù)傳輸對象

在應(yīng)用程序不同tie(關(guān)系)之間傳輸?shù)膶ο?/p>

BO(business object) 業(yè)務(wù)對象

從業(yè)務(wù)模型的角度看,見UML元件領(lǐng)域模型中的領(lǐng)域?qū)ο笄⒅7庋b業(yè)務(wù)邏輯的java對象,通過調(diào)用DAO方法,結(jié)合PO,VO進(jìn)行業(yè)務(wù)操作摹迷。

POJO(plain ordinary java object) 簡單無規(guī)則java對象

純的傳統(tǒng)意義的java對象。就是說在一些Object/Relation Mapping工具中郊供,能夠做到維護(hù)數(shù)據(jù)庫表記錄的persisent object完全是一個符合Java Bean規(guī)范的純Java對象峡碉,沒有增加別的屬性和方法。我的理解就是最基本的Java Bean驮审,只有屬性字段及setter和getter方法鲫寄!。

DAO(data access object) 數(shù)據(jù)訪問對象

是一個sun的一個標(biāo)準(zhǔn)j2ee設(shè)計模式疯淫,這個模式中有個接口就是DAO塔拳,它負(fù)持久層的操作。為業(yè)務(wù)層提供接口峡竣。此對象用于訪問數(shù)據(jù)庫靠抑。通常和PO結(jié)合使用,DAO中包含了各種數(shù)據(jù)庫的操作方法适掰。通過它的方法,結(jié)合PO對數(shù)據(jù)庫進(jìn)行相關(guān)的操作颂碧。夾在業(yè)務(wù)邏輯與數(shù)據(jù)庫資源中間荠列。配合VO, 提供數(shù)據(jù)庫的CRUD操作...

O/R Mapper 對象/關(guān)系 映射

定義好所有的mapping之后,這個O/R Mapper可以幫我們做很多的工作载城。通過這些mappings,這個O/R Mapper可以生成所有的關(guān)于對象保存肌似,刪除,讀取的SQL語句诉瓦,我們不再需要寫那么多行的DAL代碼了川队。

實體Model(實體模式)

DAL(數(shù)據(jù)訪問層)

IDAL(接口層)

DALFactory(類工廠)

BLL(業(yè)務(wù)邏輯層)

BOF Business Object Framework 業(yè)務(wù)對象框架

SOA Service Orient Architecture 面向服務(wù)的設(shè)計

EMF Eclipse Model Framework Eclipse建模框架


PO:全稱是persistant object持久對象

最形象的理解就是一個PO就是數(shù)據(jù)庫中的一條記錄睬澡。

好處是可以把一條記錄作為一個對象處理固额,可以方便的轉(zhuǎn)為其它對象。

BO:全稱是business object:業(yè)務(wù)對象

主要作用是把業(yè)務(wù)邏輯封裝為一個對象煞聪。這個對象可以包括一個或多個其它的對象斗躏。比如一個簡歷,有教育經(jīng)歷昔脯、工作經(jīng)歷啄糙、社會關(guān)系等等。

我們可以把教育經(jīng)歷對應(yīng)一個PO云稚,工作經(jīng)歷對應(yīng)一個PO隧饼,社會關(guān)系對應(yīng)一個PO。
建立一個對應(yīng)簡歷的BO對象處理簡歷静陈,每個BO包含這些PO桑李。
這樣處理業(yè)務(wù)邏輯時,我們就可以針對BO去處理窿给。

VO :value object值對象,ViewObject表現(xiàn)層對象

主要對應(yīng)界面顯示的數(shù)據(jù)對象贵白。對于一個WEB頁面,或者SWT崩泡、SWING的一個界面禁荒,用一個VO對象對應(yīng)整個界面的值。

DTO :Data Transfer Object數(shù)據(jù)傳輸對象

主要用于遠(yuǎn)程調(diào)用等需要大量傳輸對象的地方角撞。
比如我們一張表有100個字段呛伴,那么對應(yīng)的PO就有100個屬性。
但是我們界面上只要顯示10個字段谒所,客戶端用WEB service來獲取數(shù)據(jù)热康,沒有必要把整個PO對象傳遞到客戶端,這時我們就可以用只有這10個屬性的DTO來傳遞結(jié)果到客戶端劣领,這樣也不會暴露服務(wù)端表結(jié)構(gòu).到達(dá)客戶端以后姐军,如果用這個對象來對應(yīng)界面顯示,那此時它的身份就轉(zhuǎn)為VO

POJO :plain ordinary java object 簡單java對象個人感覺POJO是最常見最多變的對象,是一個中間對象奕锌,也是我們最常打交道的對象著觉。

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

DAO:data access object數(shù)據(jù)訪問對象

這個大家最熟悉惊暴,和上面幾個O區(qū)別最大饼丘,基本沒有互相轉(zhuǎn)化的可能性和必要.
主要用來封裝對數(shù)據(jù)庫的訪問。通過它可以把POJO持久化為PO辽话,用PO組裝出來VO肄鸽、DTO

PO:persistant object持久對象,可以看成是與數(shù)據(jù)庫中的表相映射的java對象。最簡單的PO就是對應(yīng)數(shù)據(jù)庫中某個表中的一條記錄油啤,多個記錄可以用PO的集合典徘。PO中應(yīng)該不包含任何對數(shù)據(jù)庫的操作.

VO:value object值對象。通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞村砂,和PO一樣也是僅僅包含數(shù)據(jù)而已。但應(yīng)是抽象出的業(yè)務(wù)對象,可以和表對應(yīng),也可以不,這根據(jù)業(yè)務(wù)的需要.個人覺得同DTO(數(shù)據(jù)傳輸對象),在web上傳遞.

DAO:data access object數(shù)據(jù)訪問對象屹逛,此對象用于訪問數(shù)據(jù)庫础废。通常和PO結(jié)合使用,DAO中包含了各種數(shù)據(jù)庫的操作方法罕模。通過它的方法,結(jié)合PO對數(shù)據(jù)庫進(jìn)行相關(guān)的操作.

BO:business object業(yè)務(wù)對象,封裝業(yè)務(wù)邏輯的java對象,通過調(diào)用DAO方法,結(jié)合PO,VO進(jìn)行業(yè)務(wù)操作;

POJO:plain ordinary java object 簡單無規(guī)則java對象,我個人覺得它和其他不是一個層面上的東西,VO和PO應(yīng)該都屬于它.


VO:值對象评腺、視圖對象

PO:持久對象

QO:查詢對象

DAO:數(shù)據(jù)訪問對象

DTO:數(shù)據(jù)傳輸對象


struts 里的 ActionForm 就是個VO;

hibernate里的 實體bean就是個PO,也叫POJO;

hibernate里的Criteria 就相當(dāng)于一個QO;

在使用hibernate的時候我們會定義一些查詢的方法,這些方法寫在接口里,可以有不同的實現(xiàn)類.而這個接口就可以說是個DAO.

個人認(rèn)為QO和DTO差不多.


PO是持久化對象。BO=business object—業(yè)務(wù)對象淑掌。

PO可以嚴(yán)格對應(yīng)數(shù)據(jù)庫表蒿讥,一張表對映一個PO。

BO則是業(yè)務(wù)邏輯處理對象抛腕,我的理解是它裝滿了業(yè)務(wù)邏輯的處理芋绸,在業(yè)務(wù)邏輯復(fù)雜的應(yīng)用中有用。

VO:value object值對象担敌、view object視圖對象

PO:持久對象

QO:查詢對象

DAO:數(shù)據(jù)訪問對象——同時還有DAO模式

DTO:數(shù)據(jù)傳輸對象——同時還有DTO模式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末摔敛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子全封,更是在濱河造成了極大的恐慌马昙,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刹悴,死亡現(xiàn)場離奇詭異行楞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)土匀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門子房,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事池颈∥残颍” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵躯砰,是天一觀的道長每币。 經(jīng)常有香客問我,道長琢歇,這世上最難降的妖魔是什么兰怠? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮李茫,結(jié)果婚禮上揭保,老公的妹妹穿的比我還像新娘。我一直安慰自己魄宏,他們只是感情好秸侣,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宠互,像睡著了一般味榛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上予跌,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天搏色,我揣著相機(jī)與錄音,去河邊找鬼券册。 笑死频轿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的烁焙。 我是一名探鬼主播航邢,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼骄蝇!你這毒婦竟也來了翠忠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤乞榨,失蹤者是張志新(化名)和其女友劉穎秽之,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吃既,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡考榨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鹦倚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片河质。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出掀鹅,到底是詐尸還是另有隱情散休,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布乐尊,位于F島的核電站戚丸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扔嵌。R本人自食惡果不足惜限府,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望痢缎。 院中可真熱鬧胁勺,春花似錦、人聲如沸独旷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽呛梆。三九已至缩擂,卻和暖如春笙什,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背夏志。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人回溺。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像混萝,于是被迫代替她去往敵國和親遗遵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Java分層概念(轉(zhuǎn)) 原文地址(也不屬于原文吧逸嘀,這也是別人轉(zhuǎn)載的不知道原作者是誰车要,如有侵權(quán),請聯(lián)系崭倘,以刪除):h...
    小小世界R閱讀 1,634評論 0 0
  • 一個項目中說系統(tǒng)分為表現(xiàn)層翼岁、控制層、邏輯層司光、DAO層和最終數(shù)據(jù)庫五層架構(gòu) 表現(xiàn)層就是看到的東西琅坡,比如你現(xiàn)在看到的當(dāng)...
    ZZS_簡閱讀 1,248評論 0 1
  • java的(PO,VO,TO,BO,DAO,POJO)解釋 O/R Mapping 是 Object Relati...
    李序鍇閱讀 2,259評論 0 7
  • VO,PO區(qū)別 O/R Mapping 是 Object RelationalMapping (對象關(guān)系映射)的縮...
    藝龍閱讀 560評論 0 0
  • 天地浩然氣掀虎,日月慷慨生凌盯。 隨風(fēng)潛入夜,化雨君莫驚烹玉。 丈量江海度非狹驰怎,熔煉日月氣自華。 料定古今英雄種二打,俱是人間正義花县忌。
    靈魂刀手閱讀 255評論 2 2