狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美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视频
亚洲精品一二三| 国产大陆精品国产| 色婷婷综合久久久久中文| 亚洲人成影院在线观看| 国产精品美女久久久久久| 国产清纯美女被跳蛋高潮一区二区久久w| 51精品视频一区二区三区| 欧美日韩国产大片| 欧美另类z0zxhd电影| 欧美一区日韩一区| 精品国产乱子伦一区| 国产亚洲精品资源在线26u| 亚洲精品成人悠悠色影视| 国产精品久久久久久久久免费丝袜| 久久久久久免费网| 国产精品久久久久久一区二区三区| 国产拍欧美日韩视频二区| 国产欧美精品日韩区二区麻豆天美| 国产女人aaa级久久久级 | 亚洲人成久久| 欧美亚洲免费高清在线观看| 久久精品成人| 欧美精品免费视频| 日韩免费看的电影| 国产精品亲子伦对白| 亚洲影视资源网| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久99精品久久久| 丁香激情综合国产| 国产精品videosex极品| 国产欧美日韩综合一区在线观看| 亚洲欧美日韩精品在线| 欧美日本一区二区在线观看| 91精品视频网| **网站欧美大片在线观看| 亚洲6080在线| 国产精品66部| 亚洲高清视频一区二区| 在线观看免费亚洲| 精品欧美一区二区久久| 亚洲精品日产精品乱码不卡| 麻豆精品一区二区三区| 91免费观看视频| 久久精品欧美| 精品动漫一区二区三区在线观看| 亚洲日本护士毛茸茸| 精品一区二区在线观看| 欧美a级一区| 色吧成人激情小说| 久久精品夜色噜噜亚洲aⅴ| 亚洲国产日韩一级| 成人sese在线| 国产一区二区久久久| 日韩美女一区二区三区| 亚洲精品美国一| 成人一区在线观看| 欧美一进一出视频| 国产女人aaa级久久久级| 亚洲精品日日夜夜| av男人天堂一区| 欧洲国内综合视频| 中文字幕一区在线观看视频| 国产一区二区精品在线观看| 亚洲国产一区二区三区高清| 91精品国产丝袜白色高跟鞋| 免费观看在线综合| 黄色av日韩| 精品福利二区三区| 麻豆高清免费国产一区| 亚洲国产免费看| 久久亚洲一区二区三区明星换脸| 琪琪一区二区三区| 国产欧美短视频| 久久精品亚洲国产奇米99| 久久国产生活片100| 夜久久久久久| 国产精品美女久久久久久久久久久| 国产一区二区在线看| 欧美一级久久| 亚洲精品自拍动漫在线| 91丨porny丨中文| 在线播放91灌醉迷j高跟美女| 天天av天天翘天天综合网| 伊人久久综合| 国产精品欧美久久久久无广告| 成人综合在线观看| 制服丝袜在线91| 久久超级碰视频| 色女孩综合影院| 五月天亚洲精品| 久久av最新网址| 亚洲一卡二卡三卡四卡五卡| 国产欧美日本| 亚洲一区二区黄色| 亚洲专区一区| 亚洲国产一区二区在线播放| 日韩午夜在线| 亚洲综合成人在线| 亚洲激情自拍| 亚洲一区二区三区四区在线免费观看 | 欧美日韩亚洲一区三区| 欧美日韩激情一区二区三区| 日本韩国一区二区| 美腿丝袜亚洲色图| 鲁大师影院一区二区三区| 亚洲国产精品v| 99视频精品免费视频| 欧美一区二区三区思思人| 亚洲欧美福利一区二区| 欧美少妇一区| 亚洲国产激情av| 亚洲国产日韩在线| 中文字幕av一区二区三区免费看 | 99精品国产高清一区二区| 国产欧美日韩麻豆91| 国产成人av一区二区三区在线| 国产日产精品一区二区三区四区的观看方式| 国产精品久久精品日日| 欧美一区二区在线| 亚洲成人午夜电影| 在线视频观看日韩| 中文字幕一区在线观看| 成年人午夜久久久| 日韩久久一区二区| 亚洲电影av| 一区二区日韩电影| 中文网丁香综合网| 亚洲3atv精品一区二区三区| 欧美日韩在线电影| 国产成人8x视频一区二区| 色94色欧美sute亚洲13| 国内精品久久久久影院一蜜桃| 欧美喷潮久久久xxxxx| 高清不卡一区二区在线| 欧美日韩激情一区| 懂色中文一区二区在线播放| 久久久99精品免费观看| 亚洲小说欧美另类社区| 国产午夜精品福利| 久久精品综合一区| 国产中文字幕一区| 精品国产乱码久久| 国内自拍一区| 亚洲伦在线观看| 欧美理论在线播放| 99精品视频免费在线观看| 欧美韩日一区二区三区四区| 在线观看欧美亚洲| 中文字幕在线一区免费| 欧美视频一二三区| voyeur盗摄精品| 亚洲欧美一区二区三区久本道91 | 久久综合久久99| 欧美性色综合| 视频一区欧美日韩| 欧美一区日韩一区| 国产精品九九| 日韩电影在线一区二区| 国产欧美精品一区二区色综合朱莉| 亚洲国产日韩欧美一区二区三区| 偷拍日韩校园综合在线| 91精品国产91综合久久蜜臀| 午夜精品视频| 国产精品一区二区视频| 国产精品久久久一区麻豆最新章节| 亚洲一区免费看| 国产二区国产一区在线观看| 欧美α欧美αv大片| 一本色道亚洲精品aⅴ| 成人动漫精品一区二区| 亚洲一区二区美女| 日韩视频一区二区在线观看| av电影天堂一区二区在线观看| 秋霞国产午夜精品免费视频| 久久综合给合久久狠狠狠97色69| 亚洲永久字幕| 成人激情开心网| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 在线综合视频播放| 亚洲国产二区| 国产成人免费在线视频| 亚洲卡通欧美制服中文| 久久网站热最新地址| 色婷婷国产精品综合在线观看| 99久久精品久久久久久清纯| 日韩和欧美的一区| 国产精品进线69影院| 久久嫩草精品久久久精品| 91国产免费观看| 亚洲特色特黄| 成人av在线资源网| 亚洲成av人片| 亚洲一区二区四区蜜桃| 中文字幕一区二区三区在线播放 | 好看的日韩av电影| 国产一区二区三区精品欧美日韩一区二区三区| 中文字幕一区二区三区精华液 | 亚洲色图清纯唯美| 国产亚洲美州欧州综合国| 欧美日韩日本视频|