成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解析Hibernate視圖實例

開發 后端
對Hibernate視圖進行映射,生成可持久化類對象。注意:在Hibernate3之后才支持對Hibernate視圖的操作,Hibernate2并不支持如果你的項目中是使用Hibernate2就沒必要往下看了。

本文主要講Hibernate視圖的創建,分析,查詢。下面是具體的分析以及相應的代碼。

開發環境:Eclipse3.2+MyEclipse5.01GA;框架使用:Struts+Spring+Hibernate
在Employee數據庫中有三個表:EmployeeInfo(員工信息表)、Depts(部門表)、Business(職務表)
EmployeeInfo表結構:

  1. emp_id主鍵  
  2. emp_name  
  3. emp_sex  
  4. emp_age  
  5. emp_dept存儲dept_id  
  6. emp_business存儲business_id  
  7. emp_address  
  8.  
  9. Depts:  
  10. dept_id主鍵  
  11. dept_name  
  12.  
  13. Business:  
  14. business_id主鍵  
  15. business_name 

在應用程序中需要查詢員工的詳細信息,包括部門和職務名稱,要完成這樣的查詢需要較長較復雜的SQL代碼,與其在程序中書寫代碼不如在數據庫建立一個視圖來簡化程序的操作,其SQL代碼如下:

  1. create view employeedetialinfo AS (select e.emp_id,e.emp_name,e.emp_sex,e.emp_age,d.dept_name,  
  2. b.business_name,e.emp_address from employeeinfo e,depts d,business b where e.emp_dept=d.dept_id and e.emp_business=b.business_id;  

以上的SQL語句創建了一個名為employeedetialinfo的視圖。現在需要用對Hibernate視圖進行映射,生成可持久化類對象。注意:在Hibernate3之后才支持對視圖的操作,Hibernate2并不支持如果你的項目中是使用Hibernate2就沒必要往下看了。

在Eclipse中切到MyEclipse DataBase Explorer(數據庫瀏覽視圖)中打開連接,找到Employee表,選擇下面的View子節點,可以看到一個名為employeedetialinfo的視圖,鼠標右鍵點擊它,選擇“Hibernate Reverse Engineering…”,設置了包路徑后,依次鉤選“Hibernate Mapping File”、“Java Data Object”(取消鉤選“Create abstract class”)以及“Java Data Access Object(DAO)”,在“Java Data Access Object(DAO)”下會自動鉤選“Generate precise findby methods”,以及選擇“Spring DAO”選項,使用“Spring DAO”后,在DAO類里轉而使用了HibernateTemplate對象來操作數據庫,可以免去事務管理;這樣就生成完持久化類,需要注意的是生成Hibernate視圖映射和生成表映射不一樣,因為視圖是沒有主鍵的,Hibernate就將視圖結構本身做為ID主鍵,所以你可看到生成出來的文件有四個,分別是

  1. Employeedetialinfo.hbm.xml(映射文件)  
  2. Employeedetialinfo.java(持久化類文件)  
  3. EmployeedetialinfoId.java(視圖的數據結構類)  
  4. EmployeedetialinfoDAO.java(DAO:Data Access Object用來簡化數據操作的類,常用的添加、刪除、更新、查詢都可以在這個類里得到快速的實現) 

如果對表進行映射是沒有EmployeedetialinfoId這個類文件的。

在Action中的處理代碼是這樣的:

  1. public class EmployeeDetialAction extends ActionSupport {  
  2.     /*  
  3.      * Generated Methods  
  4.      */  
  5.  
  6.     /**   
  7.      * Method execute  
  8.      * @param mapping  
  9.      * @param form  
  10.      * @param request  
  11.      * @param response  
  12.      * @return ActionForward  
  13.      */  
  14.     public ActionForward execute(ActionMapping mapping, ActionForm form,  
  15.             HttpServletRequest request, HttpServletResponse response) {          
  16.         String empId=request.getParameter("id");//獲得頁面傳遞的員工編號  
  17.         EmployeedetialinfoDAO empInfoDAO=EmployeedetialinfoDAO 
  18.                                         .getFromApplicationContext(getWebApplicationContext());  
  19.         List list=empInfoDAO.findByProperty("id.empId", empId);  
  20.         Employeedetialinfo emp=(Employeedetialinfo)(list.get(0));  
  21.         EmployeedetialinfoId empempInfo=emp.getId();  
  22.         request.setAttribute("empinfo", empInfo);  
  23.         return mapping.findForward("EmployeeDetial");  
  24.     }  
  25. }  

在實際應用中,我們需要根據一個已知的員工ID來得到他的詳細信息,之前我使用empInfoDAO.findById方法,這個方法傳遞進去的參數是一個EmployeedetialinfoId對象,我實際化了EmployeedetialinfoId類后再setEmpId,得出來的結果都是Nullpoint;整整找了快一個月的資料都沒能找出個所以然;后來我試了findByProperty方法,它在DAO類里的定義是這樣的:

  1. public List findByProperty(String propertyName, Object value) 

第一個參數是類里的屬性名,第二個參數是值;需要注意的是如果在設置參數的時候直接傳empId這個屬性將會報錯,提示找不到這個屬性,而是需要在empId前面加上父類名Id,即"id.empId",這個ID是何許人也?它的定義就在Employeedetialinfo.hbm.xml映射文件里

  1. <composite-id name="id" class="com.terry.hibernate.modal.EmployeedetialinfoId">。  

以上的操作就完成了對Hibernate視圖的查詢,小小經驗,希望對您有用。

【編輯推薦】

  1. Hibernate入門學習寶典
  2. Hibernate屬性簡單分析
  3. Struts-Spring-Hibernate案例
  4. 簡述Hibernate配置連接池
  5. 對Hibernate中get()與load()不同點分析
責任編輯:仲衡 來源: blogjava
相關推薦

2009-09-27 16:21:22

Hibernate C

2009-09-23 17:05:52

Hibernate S

2009-09-23 10:28:49

使用Hibernate

2009-09-22 10:09:21

Hibernate S

2009-09-22 08:39:59

Hibernate F

2009-09-23 17:18:16

Hibernate S

2009-09-24 10:06:42

Hibernate實例

2009-06-16 16:27:22

Hibernate優化

2009-06-12 15:09:01

Hibernate優化

2009-06-18 09:14:08

Hibernate H

2009-09-24 13:25:58

Hibernate m

2009-06-11 14:40:59

Hibernate分頁Hibernate查詢

2009-06-30 16:55:19

2009-09-23 15:37:52

Hibernate 原

2012-02-14 15:51:13

JavaHibernate

2009-06-30 14:02:00

hibernate入門MyEclipse開發

2009-09-22 09:55:58

Hibernate實例

2009-09-22 10:50:04

Hibernate c

2009-06-17 16:22:45

Hibernate連接

2011-04-13 11:16:10

路由器WCCPWeb
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九九九久久国产免费 | 亚洲精品久久国产高清情趣图文 | 日本精品一区二区三区视频 | 亚洲精品成人在线 | 国产日韩欧美 | 欧美一级免费观看 | 欧美一区二区在线 | 91色视频在线观看 | 91久色| 久久y| 欧洲一区二区三区 | jlzzjlzz欧美大全| www国产成人免费观看视频,深夜成人网 | 色播99| 久久国产精品一区 | 日本国产一区二区 | 亚洲男人的天堂网站 | 日韩在线免费看 | 久久久久久成人 | 人人人人干 | 91亚洲国产 | 一区二区在线 | 亚洲精品国产第一综合99久久 | 99视频在线免费观看 | 精品无码三级在线观看视频 | 国产日韩欧美一区二区 | 精品在线一区二区 | 免费视频一区二区 | 亚洲日日夜夜 | 在线观看成人av | 久久精品小视频 | 91亚洲国产成人精品一区二三 | 国产在线精品一区二区三区 | 日韩av在线一区二区三区 | 国产精久久久久久久 | 国产乱码精品1区2区3区 | 最新日韩精品 | 国产电影一区二区 | 国产视频精品免费 | 日韩欧美三区 | 欧美日韩久久精品 |