`
simgsg
  • 浏览: 96036 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

在Hibernate应用中使用视图

 
阅读更多

开发环境:Eclipse3.2+MyEclipse5.01GA;框架使用:Struts+Spring+Hibernate
在Employee数据库中有三个表:EmployeeInfo(员工信息表)、Depts(部门表)、Business(职务表)


EmployeeInfo表结构:
emp_id主键
emp_name
emp_sex
emp_age
emp_dept存储dept_id
emp_business存储business_id
emp_address

 

Depts:
dept_id主键
dept_name

 

Business:
business_id主键
business_name

 

在应用程序中需要查询员工的详细信息,包括部门和职务名称,要完成这样的查询需要较长较复杂的SQL代码,与其在程序中书写代码不如在数据库建立一个视图来简化程序的操作,其SQL代码如下:


create view employeedetialinfo AS (select e.emp_id,e.emp_name,e.emp_sex,e.emp_age,d.dept_name,
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就将视图结构本身做为ID主键,所以你可看到生成出来的文件有四个,分别是
Employeedetialinfo.hbm.xml(映射文件)
Employeedetialinfo.java(持久化类文件)
EmployeedetialinfoId.java(视图的数据结构类)
EmployeedetialinfoDAO.java(DAO:Data Access Object用来简化数据操作的类,常用的添加、删除、更新、查询都可以在这个类里得到快速的实现)
如果对表进行映射是没有EmployeedetialinfoId这个类文件的。

在Action中的处理代码是这样的:
public class EmployeeDetialAction extends ActionSupport {
    /*
     * Generated Methods
     */

    /** 
     * Method execute
     * @param mapping
     * @param form
     * @param request
     * @param response
     * @return ActionForward
     */
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {        
        String empId=request.getParameter("id");//获得页面传递的员工编号
        EmployeedetialinfoDAO empInfoDAO=EmployeedetialinfoDAO
                                        .getFromApplicationContext(getWebApplicationContext());
        List list=empInfoDAO.findByProperty("id.empId", empId);
        Employeedetialinfo emp=(Employeedetialinfo)(list.get(0));
        EmployeedetialinfoId empInfo=emp.getId();
        request.setAttribute("empinfo", empInfo);
        return mapping.findForward("EmployeeDetial");
    }
}

在实际应用中,我们需要根据一个已知的员工ID来得到他的详细信息,之前我使用empInfoDAO.findById方法,这个方法传递进去的参数是一个EmployeedetialinfoId对象,我实际化了EmployeedetialinfoId类后再setEmpId,得出来的结果都是Nullpoint;整整找了快一个月的资料都没能找出个所以然;后来我试了findByProperty方法,它在DAO类里的定义是这样的:
public List findByProperty(String propertyName, Object value)
第一个参数是类里的属性名,第二个参数是值;需要注意的是如果在设置参数的时候直接传empId这个属性将会报错,提示找不到这个属性,而是需要在empId前面加上父类名Id,即"id.empId",这个ID是何许人也?它的定义就在Employeedetialinfo.hbm.xml映射文件里,<composite-id name="id" class="com.terry.hibernate.modal.EmployeedetialinfoId">

分享到:
评论

相关推荐

    hibernate 视图

    虽然视图通常用于只读操作,但结合Hibernate的映射机制,我们可以方便地在Java应用程序中使用视图,提高代码的可维护性和复用性。同时,理解和掌握源码有助于我们更好地优化和调试代码,提升开发效率。

    Struts2、Spring和Hibernate应用实例

    "Spring和Hibernate"可能涵盖了Spring如何与Hibernate集成,以及如何在Spring中配置和使用Hibernate的相关信息。"Struts2.doc"则可能讲解了Struts2框架的使用,包括Action配置、拦截器、结果类型等内容。 总的来说...

    Hibernate+Struts的J2EE应用开发2

    在本文提到的策略中,模型层使用Hibernate实现,而视图和控制器则采用Struts框架实现。这种组合方式可以带来以下优势: 1. **降低代码耦合性**:通过将数据访问层(Hibernate)与业务逻辑层和表示层(Struts)分离...

    hibernate开发及整合应用大全

    接下来,书中会涉及如何在Tomcat环境下部署和运行Hibernate应用。Tomcat是一款轻量级的Web服务器和应用服务器,是许多小型到中型项目的首选。书中会指导读者配置Tomcat服务器,使其能够承载使用Hibernate的应用,并...

    MyEclipse开发Struts+Hibernate应用

    在IT行业中,开发Web应用程序时,常常会使用到一系列框架来简化开发流程并提高效率。本教程主要聚焦于使用MyEclipse集成开发环境(IDE)来构建基于Struts和Hibernate的Java Web应用。Struts是MVC(模型-视图-控制器...

    J2EE企业级项目开发-1期 06 hibernate映射视图的使用经验.doc

    本篇文档主要讨论了如何在Hibernate中使用映射视图来处理这种情况,特别是在面对无法直接使用原生SQL(native SQL)的情况下。 Hibernate是一个强大的Java对象关系映射(ORM)框架,它允许开发者将数据库操作转化为...

    Hibernate Synchronizer 插件使用

    ### Hibernate Synchronizer 插件使用详解 #### 引言 Hibernate Synchronizer 是...随着后续版本的迭代,期待 Hibernate Synchronizer 能够进一步完善其功能,尤其是数据库模式生成的支持,以满足更广泛的应用场景。

    Struts2+Hibernate+Spring整合开发深入剖析与范例应用03

    实际的范例应用会包含详细的配置文件、Action类、Service类和DAO类的代码,以及如何在这些类中使用Struts2、Hibernate和Spring的示例。这些代码实例将帮助开发者更好地理解和掌握三者整合的技巧,提升开发效率。

    利用MyEclipse开发Struts+Hibernate应用

    开发者可以在JSP页面中使用Struts2的标签库,如s:property标签显示Action返回的数据,s:form标签创建表单,s:submit标签提交表单请求。 最后,对于内存使用过程,创建对象和对象的引用是一个关键的话题。在Java中,...

    应用SpringMVC与Hibernate进行WEB开发

    Hibernate是一种开源的对象关系映射(ORM)框架,用于在Java应用中处理数据库的持久化操作。其主要优点包括: 1. **对象关系映射**:Hibernate通过配置文件或注解将Java对象与数据库表进行映射,开发者可以使用面向...

    Spring MVC + Hibernate应用Demo

    Spring MVC和Hibernate是Java开发中两个非常...这个"Spring MVC + Hibernate应用Demo"项目是学习和理解这两个框架集成的绝佳实践。通过深入研究项目中的代码和配置,初学者可以更好地理解和掌握这两个框架的使用方法。

    开发Spring.Struts.Hibernate应用

    "Struts.2.Spring应用.pdf"可能专注于Struts 2与Spring的集成,详细讲解如何在Struts 2应用中使用Spring的特性,如Bean管理、事务控制等。"spring框架,技术详解及使用指导.pdf"则可能深入解析Spring框架的各个模块...

    springmvc+hibernate使用jar包集合

    Spring MVC提供了一种模型-视图-控制器(MVC)架构,使得开发者能够有效地组织和管理应用程序的业务逻辑,而Hibernate则是一个强大的对象关系映射(ORM)工具,它简化了数据库操作,使开发者可以使用Java对象来操作...

    Struts/Hibernate应用小例子

    在这个"Struts/Hibernate应用小例子"中,开发者创建了一个简单的通讯录应用,实现了基本的创建(Create)、读取(Read)、更新(Update)和删除(Delete),即CRUD功能。这些基本操作是任何数据驱动应用的核心组成...

    Hibernate应用开发完全手册(源代码)

    该书旨在帮助开发者熟练掌握Hibernate的使用,以便在实际项目中,尤其是电子商城这类业务复杂的场景下,高效地进行数据库操作和数据管理。 Hibernate是一个强大的工具,它简化了Java应用程序与数据库之间的交互,...

    开发Spring.Struts.Hibernate应用.

    在IT行业中,Spring、Struts和Hibernate...在"开发Spring.Struts.Hibernate应用."这个主题中,学习者可以通过阅读第十一章.开发Spring.Struts.Hibernate应用.pdf文件,获取详细的步骤和实践指南,从而提升自己的技能。

    Java应用开发选课系统SpringMVC+Hibernate

    通过学习和实践这个项目,开发者不仅可以掌握SpringMVC和Hibernate的基本用法,还能了解到如何在实际项目中整合这两个框架,以及如何设计和实现一个完整的企业级应用。对于希望深入理解Java Web开发的程序员来说,这...

Global site tag (gtag.js) - Google Analytics