狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

Struts+Hibernate數據表示

Struts+Hibernate數據表示

更新時間:2020-02-19 文章作者:未知 信息來源:網絡 閱讀次數:

在 struts+ hibernate 這種結構中,是不應該把Hibernate產生的PO直接傳遞給JSP的,不管他是Iterator,還是List,這是一個設計錯誤。

  我來談談在J2EE架構中各層的數據表示方法:

  Web層的數據表示是FormBean,數據來源于HTML Form POST

  業務層的數據表示是VO

  持久層的數據表示是PO,其數據來源于數據庫,持久層的數據表示例如CMP。在一個規范的J2EE架構中,不同層的數據表示應該被限制在層內,而不應該擴散到其它層,這樣可以降低層間的耦合性,提高J2EE架構整體的可維護性和可擴展性。比如說Web層的邏輯進行了修改,那么只需要修改FormBean的結構,而不需要觸動業務層和持久層的代碼修改。同樣滴,當數據庫表進行了小的調整,那么也只需要修改持久層數據表示,而不需要觸動業務層代碼和Web層代碼。

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

  先來談談ActionFormBean和持久層的PO之間的重大區別:

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

  但是在復雜的應用中,ActionFormBean和PO是分離的,他們也不可能一樣。ActionFormBean是和網頁里面的Form表單一一對應的,Form里面有什么元素,Bean里面就有什么屬性。而PO和數據庫表對應,因此如果數據庫表不修改,那么PO也不會修改,如果頁面的流程和數據庫表字段對應關系不一致,那么你又如何能夠使用ActionFormBean來取代PO呢?

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

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

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

  那么在一個完整的J2EE系統中應該如何進行合理的設計呢?

  JSP(View) ---> Action Form Bean (Module) ---> Action(Control)

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

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

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

  然后來看一看整個架構的流程:

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

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

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

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

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

  總結:

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

  Form Bean 和PO之間的數據轉化是在Action中進行滴。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
国产精品久久久久aaaa樱花| 久久先锋影音av| 亚洲日本护士毛茸茸| 丁香激情综合五月| 在线观看日韩一区| 婷婷成人激情在线网| 亚洲成人自拍视频| 国产精品乱码妇女bbbb| av午夜一区麻豆| 日韩一区二区电影在线| 秋霞电影一区二区| 色哟哟日韩精品| 欧美三级特黄| 精品成人免费观看| 成人av网址在线观看| 91精品国产全国免费观看| 久久精品国产精品亚洲综合| 老司机精品久久| 三级久久三级久久| 国产精品久久久久久久久久妞妞| ...xxx性欧美| aa级大片欧美三级| 夜夜操天天操亚洲| 性一交一乱一区二区洋洋av| 亚洲制服欧美中文字幕中文字幕| 亚洲国产婷婷香蕉久久久久久99| 中文字幕一区在线观看| 狠狠入ady亚洲精品经典电影| 国产女人18毛片水真多成人如厕 | 中文字幕第一页久久| 欧美日本在线| 1024国产精品| 一区二区福利| 日韩经典一区二区| 欧美日韩一区二区三区四区| 国产一区二区三区av电影 | 毛片一区二区| 久久成人久久爱| 日韩一区二区三区精品视频| 国产成人精品在线看| 久久久久久99久久久精品网站| 91在线观看免费视频| 综合av第一页| 久久精品亚洲一区二区| 麻豆传媒一区二区三区| 日韩欧美的一区| 你懂的国产精品| 亚洲乱码日产精品bd| 一道本成人在线| 国产一区二区在线免费观看| www国产成人| 亚洲国产日韩在线| 日本午夜精品一区二区三区电影| 欧美精品一二三| 欧美激情第8页| 亚洲永久精品大片| 欧美精品色一区二区三区| 99久久精品免费精品国产| 亚洲色欲色欲www在线观看| 在线一区二区观看| 不卡的av在线播放| 亚洲综合色区另类av| 欧美三级资源在线| 91年精品国产| 日韩激情av在线| 欧美变态tickling挠脚心| 亚洲成人直播| 国产一区二区网址| 国产精品福利电影一区二区三区四区| 美女尤物久久精品| a在线欧美一区| 亚洲一级二级三级| 日韩欧美在线网站| 一本色道久久综合亚洲精品高清 | 不卡av在线免费观看| 亚洲黄色av一区| 91精品国产全国免费观看| 在线观看一区视频| 国产一二三精品| 综合激情成人伊人| 欧美一区二区三区免费在线看 | 在线成人h网| 国产一区二区三区免费看| 一色屋精品亚洲香蕉网站| 欧美日韩在线播放三区四区| 国模 一区 二区 三区| 精品一区二区免费在线观看| 中文字幕一区二区三中文字幕 | 亚洲精品乱码久久久久久蜜桃麻豆| 美女视频一区二区三区| 国产精品久久久久久久久免费桃花 | 成人性视频免费网站| 亚洲午夜在线观看视频在线| 精品久久国产97色综合| 色先锋aa成人| 在线日韩电影| www.视频一区| 美国十次综合导航| 亚洲乱码国产乱码精品精98午夜| 精品久久免费看| 在线观看日韩av先锋影音电影院| 国产精品国产三级国产专区53| 国产曰批免费观看久久久| 亚洲一区二区在线免费看| 久久先锋影音av鲁色资源| 欧美熟乱第一页| 国产精品久久久久久久久久妞妞| 91免费国产在线观看| 国产乱国产乱300精品| 亚洲国产日韩av| 国产精品免费看片| 久久久久久影视| 91麻豆精品国产自产在线观看一区| 香蕉免费一区二区三区在线观看 | 美女被吸乳得到大胸91| 亚洲另类春色国产| 欧美国产成人在线| 精品日韩一区二区三区免费视频| 欧美美女bb生活片| 欧洲精品在线观看| 色综合久久88色综合天天6| 国产日韩高清一区二区三区在线| 欧美日本国产| 94色蜜桃网一区二区三区| 黄一区二区三区| 日韩电影在线一区| 五月天久久比比资源色| 一区二区三区波多野结衣在线观看| 久久久久高清精品| 久久久影视传媒| 欧美精品一区二区三区四区| 91精品国产色综合久久不卡电影 | 亚洲视频www| 99国内精品| 亚洲精品偷拍| aa日韩免费精品视频一| 亚洲精品久久| 日韩一级网站| 国产亚洲毛片在线| 国产精品嫩草99av在线| 亚洲一区三区视频在线观看| 日韩亚洲不卡在线| 国产精品永久| 久久综合电影| 欧美视频在线一区二区三区 | 日韩免费观看高清完整版在线观看| 欧美日韩激情一区二区| 欧美群妇大交群中文字幕| 7777精品伊人久久久大香线蕉的 | av在线不卡电影| 99re热这里只有精品视频| 91在线观看污| 国产一区日韩欧美| 野花国产精品入口| 久热国产精品| 在线不卡a资源高清| 精品久久久久久久一区二区蜜臀| 久久亚洲一区二区三区明星换脸 | 日韩欧美成人一区二区| 久久精品欧美日韩| 亚洲天堂2016| 五月激情综合婷婷| 精品一区二区三区在线观看 | 婷婷综合五月天| 国产一区二区三区综合| www.99精品| 影音先锋久久| 老牛嫩草一区二区三区日本| 欧美精品亚洲二区| 国产欧美综合在线| 亚洲一区二区在线视频| 久久成人18免费观看| k8久久久一区二区三区| 亚洲一级黄色| 色婷婷综合久久久久中文| 欧美一区二区三区免费观看视频| 欧美国产日韩亚洲一区| 亚洲国产精品久久不卡毛片 | 亚洲综合色在线| 狠狠v欧美v日韩v亚洲ⅴ| 99精品久久只有精品| 亚洲片区在线| 精品视频资源站| 亚洲精品一区二区三区在线观看 | 亚洲国产三级在线| 国产成人综合视频| 亚洲午夜伦理| 精品视频1区2区| 91精品欧美久久久久久动漫| 亚洲欧美久久久| 色呦呦国产精品| 精品国产露脸精彩对白| 一区二区欧美视频| 国产成人av在线影院| 亚洲精品乱码视频| 日韩一区二区三区免费观看| 亚洲精品videosex极品| 国产激情视频一区二区在线观看 | 伊人精品视频| 欧美巨大另类极品videosbest|