偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

解析Hibernate視圖實(shí)例

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

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

開發(fā)環(huán)境:Eclipse3.2+MyEclipse5.01GA;框架使用:Struts+Spring+Hibernate
在Employee數(shù)據(jù)庫(kù)中有三個(gè)表:EmployeeInfo(員工信息表)、Depts(部門表)、Business(職務(wù)表)
EmployeeInfo表結(jié)構(gòu):

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

在應(yīng)用程序中需要查詢員工的詳細(xì)信息,包括部門和職務(wù)名稱,要完成這樣的查詢需要較長(zhǎng)較復(fù)雜的SQL代碼,與其在程序中書寫代碼不如在數(shù)據(jù)庫(kù)建立一個(gè)視圖來簡(jiǎn)化程序的操作,其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語(yǔ)句創(chuàng)建了一個(gè)名為employeedetialinfo的視圖?,F(xiàn)在需要用對(duì)Hibernate視圖進(jìn)行映射,生成可持久化類對(duì)象。注意:在Hibernate3之后才支持對(duì)視圖的操作,Hibernate2并不支持如果你的項(xiàng)目中是使用Hibernate2就沒必要往下看了。

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

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

如果對(duì)表進(jìn)行映射是沒有EmployeedetialinfoId這個(gè)類文件的。

在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");//獲得頁(yè)面?zhèn)鬟f的員工編號(hào)  
  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. }  

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

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

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

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

以上的操作就完成了對(duì)Hibernate視圖的查詢,小小經(jīng)驗(yàn),希望對(duì)您有用。

【編輯推薦】

  1. Hibernate入門學(xué)習(xí)寶典
  2. Hibernate屬性簡(jiǎn)單分析
  3. Struts-Spring-Hibernate案例
  4. 簡(jiǎn)述Hibernate配置連接池
  5. 對(duì)Hibernate中g(shù)et()與load()不同點(diǎn)分析
責(zé)任編輯:仲衡 來源: blogjava
相關(guān)推薦

2009-09-23 17:05:52

Hibernate S

2009-09-27 16:21:22

Hibernate C

2009-09-22 08:39:59

Hibernate F

2009-09-23 17:18:16

Hibernate S

2009-09-24 10:06:42

Hibernate實(shí)例

2009-09-23 10:28:49

使用Hibernate

2009-09-22 10:09:21

Hibernate S

2009-06-12 15:09:01

Hibernate優(yōu)化

2009-06-18 09:14:08

Hibernate H

2009-06-16 16:27:22

Hibernate優(yōu)化

2009-06-17 16:22:45

Hibernate連接

2009-06-30 16:55:19

2012-02-14 15:51:13

JavaHibernate

2009-06-30 14:02:00

hibernate入門MyEclipse開發(fā)

2009-09-22 09:55:58

Hibernate實(shí)例

2009-09-23 15:37:52

Hibernate 原

2009-09-22 10:50:04

Hibernate c

2009-09-24 13:25:58

Hibernate m

2009-06-11 14:40:59

Hibernate分頁(yè)Hibernate查詢

2011-07-22 17:24:46

iPhone 視圖
點(diǎn)贊
收藏

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