国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

結(jié)合Struts和Hibernate談J2EE架構(gòu)的數(shù)據(jù)表示

開發(fā) 后端
本文總結(jié)了一些在J2EE架構(gòu)中各層的數(shù)據(jù)表示方法。在一個規(guī)范的J2EE架構(gòu)中,不同層的數(shù)據(jù)表示應(yīng)該被限制在層內(nèi),而不應(yīng)該擴散到其它層,這樣可以降低層間的耦合性,提高J2EE架構(gòu)整體的可維護性和可擴展性。

在 struts+ hibernate 這種結(jié)構(gòu)中,是不應(yīng)該把Hibernate產(chǎn)生的PO直接傳遞給JSP的,不管他是Iterator,還是List,這是一個設(shè)計錯誤。

我來談?wù)勗贘2EE架構(gòu)中各層的數(shù)據(jù)表示方法:

Web層的數(shù)據(jù)表示是FormBean,數(shù)據(jù)來源于HTML Form POST
業(yè)務(wù)層的數(shù)據(jù)表示是VO
持久層的數(shù)據(jù)表示是PO,其數(shù)據(jù)來源于數(shù)據(jù)庫,持久層的數(shù)據(jù)表示例如CMP

在一個規(guī)范的J2EE架構(gòu)中,不同層的數(shù)據(jù)表示應(yīng)該被限制在層內(nèi),而不應(yīng)該擴散到其它層,這樣可以降低層間的耦合性,提高J2EE架構(gòu)整體的可維護性和可擴展性。比如說Web層的邏輯進行了修改,那么只需要修改FormBean的結(jié)構(gòu),而不需要觸動業(yè)務(wù)層和持久層的代碼修改。同樣滴,當數(shù)據(jù)庫表進行了小的調(diào)整,那么也只需要修改持久層數(shù)據(jù)表示,而不需要觸動業(yè)務(wù)層代碼和Web層代碼。

不過由于Hibernate的強大功能,例如動態(tài)生成PO,PO的狀態(tài)管理可以脫離Session,使得在應(yīng)用了Hibernate的J2EE框架中,PO完全可以充當VO,因此我們下面把PO和VO合并,統(tǒng)稱為PO。

先來談?wù)凙ctionFormBean和持久層的PO之間的重大區(qū)別。

在簡單的應(yīng)用中,ActionFormBean和PO幾乎是沒有區(qū)別,所以很多人干脆就是用ActionFormBean來充當PO,于是ActionFormBean從JSP頁面到Servlet控制層再到業(yè)務(wù)層,然后穿過持久層,***一直映射到數(shù)據(jù)庫表。真是一竿子捅到了底!

但是在復(fù)雜的應(yīng)用中,ActionFormBean和PO是分離的,他們也不可能一樣。ActionFormBean是和網(wǎng)頁里面的Form表單一一對應(yīng)的,F(xiàn)orm里面有什么元素,Bean里面就有什么屬性。而PO和數(shù)據(jù)庫表對應(yīng),因此如果數(shù)據(jù)庫表不修改,那么PO也不會修改,如果頁面的流程和數(shù)據(jù)庫表字段對應(yīng)關(guān)系不一致,那么你又如何能夠使用ActionFormBean來取代PO呢?

比如說吧,用戶注冊頁面要求注冊用戶的基本信息,因此HTML Form里面包含了基本信息屬性,于是你需要一個ActionFormBean來一一對應(yīng)(注意:是一一對應(yīng)),每個Bean屬性對應(yīng)一個文本框或者選擇框什么的。

而用戶這個持久對象呢?他的屬性和ActionFormBean有什么明顯不同呢?他會有一些ActionFormBean所沒有的集合屬性,比如說用戶的權(quán)限屬性,用戶的組屬性,用戶的帖子等等。另外還有可能的是在ActionFormBean里面有3個屬性,分別是用戶的First Name, Middle Name, Last Name,而在我的User這個持久對象中就是一個 Name 對象屬性。

假設(shè)我的注冊頁面原來只要你提供First Name,那么ActionFormBean就這一個屬性,后來我要你提供全名,你要改ActionFormBean,加兩個屬性。但是這個時候PO是不應(yīng)該修改滴,因為數(shù)據(jù)庫沒有改。

那么在一個完整的J2EE系統(tǒng)中應(yīng)該如何進行合理的設(shè)計呢?

JSP(View) ---> ActionFormBean(Module) ---> Action(Control)

ActionFormBean是Web層的數(shù)據(jù)表示,它和HTML頁面Form對應(yīng),只要Web頁面的操作流程發(fā)生改變,它就要相應(yīng)的進行修改,它不應(yīng)該也不能被傳遞到業(yè)務(wù)層和持久層,否則一旦頁面修改,會一直牽連到業(yè)務(wù)層和持久層的大面積的代碼進行修改,對于軟件的可維護性和可擴展性而言,是一個災(zāi)難,Actiont就是他的邊界,到此為止!

Action(Web Control) ---> Business Bean ---> DAO ---> ORM --->DB

而PO則是業(yè)務(wù)層和持久層的數(shù)據(jù)表示,它在業(yè)務(wù)層和持久層之間進行流動,他不應(yīng)該也不能被傳遞到Web層的View中去,而ActionServlet就是他的邊界,到此為止!

然后來看一看整個架構(gòu)的流程:

當用戶通過瀏覽器訪問網(wǎng)頁,提交了一個頁面。于是Action拿到了這個FormBean,他會把FormBean屬性讀出來,然后構(gòu)造一個PO對象,再調(diào)用業(yè)務(wù)層的Bean類,完成了注冊操作,重定向到成功頁面。而業(yè)務(wù)層Bean收到這個PO對象之后,調(diào)用DAO接口方法,進行持久對象的持久化操作。

當用戶查詢某個會員的信息的時候,他用全名進行查詢,于是Action得到一個UserNameFormBean包括了3個屬性,分別是first name, middle name, last name,然后Action把UserNameFormBean的3個屬性讀出來,構(gòu)造Name對象,再調(diào)用業(yè)務(wù)Bean,把Name對象傳遞給業(yè)務(wù)Bean,進行查詢。

業(yè)務(wù)Bean取得Name(注意: Name對象只是User的一個屬性)對象之后調(diào)用DAO接口,返回一個User的PO對象,注意這個User不同于在Web層使用的UserFormBean,他有很多集合屬性滴。然后業(yè)務(wù)Bean把User對象返回給Action。

Action拿到User之后,把User的基本屬性取出(集合屬性如果不需要就免了),構(gòu)造UserFormBean,然后把UserFormBean request.setAttribute(...),然后重定向到查詢結(jié)果頁面。

查詢頁面拿到request對象里面的ActionFormBean,自動調(diào)用tag顯示之。

總結(jié):

FormBean是Web層的數(shù)據(jù)表示,他不能被傳遞到業(yè)務(wù)層;PO是持久層的數(shù)據(jù)表示,在特定情況下,例如Hibernate中,他可以取代VO出現(xiàn)在業(yè)務(wù)層,但是不管PO還是VO都必須限制在業(yè)務(wù)層內(nèi)使用,最多到達Web層的Control,絕不能被擴散到View去。

FormBean和PO之間的數(shù)據(jù)轉(zhuǎn)化是在Action中進行滴。

BTW:

JDO1.x還不能像Hibernate功能這樣強大,PO不能脫離持久層,所以必須在業(yè)務(wù)層使用VO,因此必須在業(yè)務(wù)層進行大量的VO和PO的轉(zhuǎn)化操作,相對于Hibernate來說,編程比較煩瑣。

當然咯,理論是一回事,實際操作也不一定非要這樣干,你可以自行取舍,在實際項目中靈活一點,增加一點bad smell,提高開發(fā)效率。只不過在大型項目中***還是嚴絲合縫,不然的話,改版的時候會痛苦的很滴。

【編輯推薦】

  1. j2ee web service開發(fā)(三)SAAJ帶附件的soap消息
  2. .NET與J2EE之爭
  3. J2ee Jdbc 存儲過程調(diào)用
  4. j2ee web service開發(fā)(五)把ejb發(fā)布為web服務(wù)
  5. j2ee web service開發(fā)(四)soap報頭與處理
責(zé)任編輯:book05 來源: 百度博客
相關(guān)推薦

2009-06-16 11:14:00

Hibernate+SJ2EE應(yīng)用開發(fā)

2009-06-22 17:34:40

J2EE架構(gòu)

2009-06-23 08:06:46

J2EE體系架構(gòu)J2EE模型J2EE設(shè)計模式

2009-06-16 13:27:59

Hibernate x

2009-06-10 16:25:43

J2EE架構(gòu)架構(gòu)

2009-06-10 14:10:23

J2EE學(xué)習(xí)J2EE是什么

2009-06-10 13:37:06

J2EE可伸縮性J2EE靈活性J2EE維護

2009-06-19 17:29:12

Struts常見錯誤J2EE

2009-02-23 11:18:06

J2EE架構(gòu)師Java

2013-05-28 11:29:19

struts2

2009-06-23 16:48:26

J2EE常見問題J2EE平臺

2009-06-19 17:03:44

J2EE學(xué)習(xí)

2009-06-11 17:06:11

J2EE歷史Java EE概述

2009-06-30 17:02:31

J2EE實現(xiàn)分頁

2009-06-23 08:03:02

2009-06-10 16:35:26

2009-06-08 21:34:09

J2EEJ2SEJ2ME

2009-06-11 17:11:07

J2EE設(shè)計模式工廠模式

2009-06-23 08:12:48

J2EE調(diào)用存儲過程

2009-06-18 15:54:57

J2EE下使用JNDI
點贊
收藏

51CTO技術(shù)棧公眾號

自产国语精品视频| yourporn在线观看视频| 奇米狠狠一区二区三区| 在线看日韩欧美| 91大神在线网站| 午夜精品爽啪视频| 免费黄视频网站| 国产偷国产偷亚洲高清人白洁| 国产黄色激情视频| 精品一区二区影视| 亚洲成色www久久网站| 99在线|亚洲一区二区| 亚洲曰本av电影| 国产精品二区不卡| 国产日韩精品综合网站| 日韩中文字幕高清在线观看| 国产精品黄视频| 欧美日韩精品一区二区视频| 国产精品高清在线| 欧美伦理在线视频| 成人黄色激情网| 中文字幕日韩一区二区不卡| 亚洲伊人久久大香线蕉av| 亚洲色图88| 狠狠久久综合婷婷不卡| 99在线精品免费视频九九视 | 久久精品一区| 精品毛片久久久久久| 亚洲伦理一区| 欧美在线一区二区三区四区| 日韩精品乱码免费| 一级黄色片播放| 成人av午夜电影| 国产成人无码av在线播放dvd| 国产精品午夜免费| 中文在线a在线| 色婷婷激情综合| 久久77777| 亚洲女同精品视频| 97久久综合精品久久久综合| 国产成人精品优优av| 最新国产拍偷乱拍精品 | 成人图片小说| 精品动漫一区二区| 91caoporm在线视频| 日韩成人中文字幕| 在线精品国产亚洲| av一区二区在线看| 国产精品一二一区| 国产网红在线| 欧美一区二区黄色| 91精品国产一区二区在线观看 | 欧美图片一区二区三区| av今日在线| 欧美激情免费在线| 欧美日韩精品一本二本三本| 中文字幕中文字幕在线中一区高清 | 欧美精品在线免费播放| 精品盗摄女厕tp美女嘘嘘| 久久精品日产第一区二区三区精品版 | 91福利区在线观看| 色综合老司机第九色激情| 国产韩国精品一区二区三区| 日韩亚洲一区在线播放| 久久无码av三级| 欧美成人三区| 久久99精品视频一区97| 在线看片一区| 啊啊啊国产视频| 精品人在线二区三区| 窝窝社区一区二区| 亚洲国产精品毛片| 午夜精品久久久久久| 成人在线黄色| 成人免费视频网站| 国产欧美va欧美不卡在线| 国产成人午夜| 国产精品88a∨| 国产91精品免费| 91精品国产综合久久久久久豆腐| 萌白酱国产一区二区| 中文日韩欧美| videos性欧美另类高清| 久久久精品黄色| 俄罗斯av网站| 99视频精品免费观看| 欧美成人免费在线视频| 青春草视频在线观看| 99re6这里只有精品| 久久久久久久久久久久久久久久久久久| 99久久精品国产麻豆演员表| 在线视频尤物| 日韩中文字在线| 97干在线视频| 成人av一区二区三区| 国产精品天天av精麻传媒| 综合色一区二区| 91国在线精品国内播放| 欧美日韩色图| 91福利在线尤物| 国产精品久久久久9999| 老司机精品视频在线| 在线观看国产视频一二三| 亚洲三级av在线| 国产亚洲精品久久久久婷婷瑜伽| 无套内精的网站| 日韩中文字幕欧美| 日韩精品每日更新| 成av人电影在线观看| 国产91在线播放九色快色| 国产91富婆露脸刺激对白| 在线播放蜜桃麻豆| 99中文字幕| 午夜精品久久久| 国产日产精品一区二区三区四区的观看方式 | 久久综合伊人77777| 久久精品国产一区二区| 精品176二区| 99c视频在线| 福利一区福利二区微拍刺激| 精品亚洲免a| 在线观看的毛片| 久久久久99精品久久久久| 国产一区二区三区免费播放| 日韩成人伦理| 日本一区二区不卡高清更新| 欧美色图在线观看| 午夜亚洲福利| 午夜影院在线观看视频| 国产自摸综合网| 午夜精品久久久| 91精品国产调教在线观看| 色佬视频在线观看| 91精品一区二区| 色成人在线视频| 久久精品亚洲人成影院| 黄页网址大全在线播放| 国产精品女人网站| 欧美日韩亚洲91| 亚洲欧美偷拍自拍| 91caoporm在线视频| 麻豆视频成人| 日韩精品免费观看| av一区二区久久| 开心激情综合| 在线看片线路1| 国产精品区一区| 日韩免费观看高清完整版在线观看| 久久深夜福利| 麻豆免费版在线观看| www.国产在线视频| 欧美肥婆姓交大片| 亚洲欧洲成人av每日更新| 日本电影一区二区| 国产中文在线视频| 欧美一区二区高清在线观看| 亚洲精品国产精品国自产在线 | 亚洲图片你懂的| 99精品视频在线| 亚洲伊人久久综合| xvideos亚洲人网站| 中文av一区二区| 日韩片欧美片| 免费黄色在线| 亚洲欧美一二三| 久青草国产97香蕉在线视频| 亚洲精品黑牛一区二区三区| 大陆av在线播放| 色99之美女主播在线视频| 久久婷婷激情| 99色在线观看| 影音先锋可以看的网站| 在线观看日韩av| 国产精品久久久久久久免费观看| 欧美日本网站| 日日噜噜噜噜夜夜爽亚洲精品| 亚洲情综合五月天| 国产精品人成在线观看免费| 日韩在线观看| 美女网站视频在线| 一本大道熟女人妻中文字幕在线| 日本亚洲欧洲色α| 欧美一级夜夜爽| 99re6这里只有精品视频在线观看| 国产成人精品999在线观看| 福利视频在线播放| 日本免费a视频| 国产男女猛烈无遮挡91| 日韩精品极品在线观看| 国产精品护士白丝一区av| 亚洲精品国产日韩| 只有精品亚洲| 国产一级二级三级在线观看| 一女被多男玩喷潮视频| wwwxx欧美| 欧美丰满老妇厨房牲生活| 777a∨成人精品桃花网| 中文字幕中文字幕一区二区| 免费成人av资源网| 久久婷婷蜜乳一本欲蜜臀|