`
gotothework
  • 浏览: 82749 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring如何与Hibernate整合

阅读更多
就像以前讲得那样,框架的学习最主要的就是思想的理解和配置文件的书写问题,所以还是先讲配置文件:
在spring与Hibernate的整合中,配置文件主要都集中在了spring的配置文件里,如下例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<!--  - Application context definition for "spring" DispatcherServlet.  -->
<beans>
       <!--这最开始的部分是Hibernate与数据库进行连接并进行表的绑定 -->
       <bean id="dataSource"
              class="org.apache.commons.dbcp.BasicDataSource"
              destroy-method="close">
              <property name="driverClassName">
                     <value>com.mysql.jdbc.Driver</value>
              </property>
              <property name="url">
                     <value>jdbc:mysql://192.168.151.72:3306/quickstart</value>
              </property>
              <property name="username">
                     <value>root</value>
              </property>
              <property name="password">
                     <value></value>
              </property>
       </bean>
       <bean id="sessionFactory"
class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
              <property name="dataSource">
                     <ref local="dataSource" />
              </property>
              <property name="mappingResources">
                     <list>
                            <value>Customer.hbm.xml</value>
                     </list>
              </property>
              <property name="hibernateProperties">
                     <props>
                            <prop key="hibernate.dialect">
                            net.sf.hibernate.dialect.MySQLDialect
                            </prop>
                            <prop key="hibernate.show_sql">true</prop>
                     </props>
              </property>
       </bean>
       <!--这部分应该是spring与Hibernate进行数据交互的部分 -->
       <bean id="transactionManager"
class="org.springframework.orm.hibernate.HibernateTransactionManager">
              <property name="sessionFactory">
                     <ref local="sessionFactory" />
              </property>
       </bean>
       <bean id="bean" class="com.ln.spring.DataImpl">
              <property name="sessionFactory">
                     <ref local="sessionFactory"></ref>
              </property>
       </bean>
       <bean id="beanFactory"
       class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
              <property name="transactionManager">
                     <ref bean="transactionManager" />
              </property>
              <property name="target">
                     <ref local="bean" />
              </property>
              <property name="transactionAttributes">
                     <props>
              <prop key="insert*">PROPAGATION_REQUIRED</prop>
              <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
                     </props>
              </property>
       </bean>
       <!--这部分则是spring的action与bean(数据)进行交互 -->
       <bean id="LoginAction" class="com.ln.spring.LoginAction">
              <property name="data">
                     <ref bean="beanFactory" />
              </property>
       </bean>
       <bean id="urlMapping"
       class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
              <property name="mappings">
                     <props>
                            <prop key="/login.do">LoginAction</prop>
                     </props>
              </property>
       </bean>
</beans>
如上所示,配置文件初看起来很长,很麻烦。但是(如上注释)我们可以分为三方面来看(由于在spring中所有要进行部署的类或配置信息一般都定义一个先定义一个 “id”为"***"的bean,所以下面遇到这种情况之说:定义一个“***”):
1.Hibernate-db:
先定义一个"dataSource" (具体配置与hibernate.cfg.xml中的一致),然后定义一个“sessionFactory",用它调用”dataSource”,并且在这个bean里面定义“hibernateProperties“(即有关hibernate的一些设置),以及与表对应的配置文件”      className”.hbm.xml。
2. Hibernate-spring:
先定义一个“transactionManager”,用它调用上面定义的“sessionFactory”,之后定义一个接口实现类“bean“(它也调用上面定义的“sessionFactory”)和与Hibernate进行交互的接口“beanFactory”。用“beanFactory”调用“transactionManager”和“bean“以及定义名为"transactionAttributes"的交互参数。
3.Spring-action   spring-bean
    定义“LoginAction”,对应spring中用来处理业务的action。并定义“urlMapping”,用来定义页面与action的对应。
二.关于要引入的包,除了要引入spring,hibernate以及数据库驱动包之外,还要引入一个由第三方提供的aopalliance.jar包(它好像就是对spring和hibernate进行整合的包)。
三.附上本例所用到的源代码:
Customer.java:
package com.ln.hb;
 
import java.io.Serializable;
public class Customer implements Serializable {
   private int id;
   private String username;
   private String password;
   public int getId() {
          return id;
   }
   public String getPassword() {
          return password;
   }
   public String getUsername() {
          return username;
   }
   public void setId(int id) {
          this.id = id;
   }
   public void setPassword(String password) {
          this.password = password;
   }
   public void setUsername(String username) {
          this.username = username;
   }
}

Data.java:
/*
 * Created on 2005/01/08
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package com.ln.spring;
import java.util.List;
import com.ln.hb.Customer;
 
/**
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public interface Data {
   public void insertCustomer(Customer customer);
   public List selectCustomer(String sql);
   }
DataImpl.java:
package com.ln.spring;
import java.util.List;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
import com.ln.hb.Customer;
 
/**
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
public class DataImpl extends HibernateDaoSupport implements Data {
   public void insertCustomer(Customer customer) {
          getHibernateTemplate().save(customer);
   }
   public List selectCustomer(String sql)
   {
          return getHibernateTemplate().find(sql);
   }
}
LoginAction.java:
package com.ln.spring;
 
/**
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import com.ln.hb.Customer;
public class LoginAction implements Controller {
   Data data;
   
   public Data getData() {
          return data;
   }
   public void setData(Data data) {
          this.data = data;
   }
   public ModelAndView handleRequest(HttpServletRequest request,
                 HttpServletResponse response) throws ServletException, IOException {
          Data userDAO=(Data) data;
          Customer customer = new Customer();
//        user.setUsername("erica");
//        user.setPassword("mypass");
//        userDAO.insertCustomer(user);
          List list=userDAO.selectCustomer("from Customer as customer");
          for(int i=0;i<list.size();i++)
          {
                 System.out.println(((Customer)list.get(i)).getUsername());
          }
          return new ModelAndView("main.jsp");
   }
}
Customer.hbm.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
       <class name="com.ln.hb.Customer" table="CUSTOMER">
              <id name="id" column="CID">
                    <generator class="increment" />
              </id>
              <property name="username" column="USERNAME" />
              <property name="password" column="PASSWORD" />
       </class>
</hibernate-mapping>
web.xml:
<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
       <servlet>
              <servlet-name>hbspring</servlet-name>
              <servlet-class>
                     org.springframework.web.servlet.DispatcherServlet
              </servlet-class>
              <load-on-startup>1</load-on-startup>
       </servlet>
       <servlet-mapping>
              <servlet-name>hbspring</servlet-name>
              <url-pattern>*.do</url-pattern>
       </servlet-mapping>
</web-app>


*这篇文章的配置文件部分讲解的不是很详细,稍后我会把配置文件的注释写上。
分享到:
评论

相关推荐

    Spring与Hibernate整合

    在"25_黑马程序员_黎活明_Spring2.5视频教程_搭建和配置Spring与Hibernate整合的环境.avi"这个文件中,可能详细演示了如何配置这些库到项目的类路径中。 接着,需要配置Spring的IoC容器。这可以通过XML配置文件完成...

    Spring与Hibernate整合实例(博客用户登录增删改查)

    在这个“Spring与Hibernate整合实例(博客用户登录增删改查)”中,我们将探讨如何将这两个强大的框架——Spring和Hibernate——结合起来,以实现一个博客系统的用户管理功能,包括用户登录、注册、信息修改以及数据...

    MyClipse6.0\Struts2,Spring与Hibernate整合应用,学生成绩管理系统

    《Struts2、Spring与Hibernate整合应用:学生成绩管理系统》 在IT行业中,构建一个高效、稳定的Web应用程序常常需要整合不同的框架。本项目“学生成绩管理系统”就是基于Struts2、Spring和Hibernate三大主流Java ...

    Struts2,Spring与Hibernate整合应用,学生成绩管理系统

    ### Struts2、Spring与Hibernate整合应用:学生成绩管理系统 #### 一、知识点概览 本项目聚焦于Struts2、Spring与Hibernate三大框架的整合应用,旨在构建一个高效、稳定、易于维护的学生成绩管理系统。通过整合这...

    Spring与Hibernate整合小例子

    "Spring与Hibernate整合"是为了实现业务逻辑层和数据访问层的高效协作。整合过程通常包括以下几个步骤: 1. **引入依赖**:首先,需要在项目中添加Spring和Hibernate的相关库。这通常通过Maven或Gradle的依赖管理来...

    SSH整合学习笔记之spring与hibernate整合(二)之c3p0

    在Spring与Hibernate整合的过程中,c3p0是一个重要的第三方组件,它是一个开源的JDBC连接池,能够有效地管理和重用数据库连接,从而减少创建和关闭连接的开销,提高系统性能。c3p0提供了许多配置选项,如最小连接数...

    spring和hibernate整合

    《Spring与Hibernate整合详解》 在现代Java Web开发中,Spring和Hibernate是两个非常重要的开源框架,它们分别在依赖注入和对象关系映射(ORM)领域有着广泛的应用。Spring作为一个全面的轻量级应用框架,提供了...

    第25,26讲 --搭建和配置Spring与Hibernate整合的环境

    通过以上步骤,我们就成功地搭建了一个Spring与Hibernate整合的开发环境。在实际开发中,我们还需要考虑性能优化、异常处理、事务策略等因素,以确保应用的稳定性和效率。此外,随着技术的发展,Spring Boot和Spring...

    Spring与hibernate 整合 简单示例

    这个简单的示例展示了Spring和Hibernate整合的基本流程,实际项目中可能还需要考虑更多的细节,如异常处理、事务策略等。 总结来说,Spring与Hibernate的整合使得Java开发人员能够更方便地管理数据库操作,并利用...

    Spring与Hibernate整合.zip

    本压缩包"Spring与Hibernate整合.zip"显然包含了一个关于如何将这两个框架集成到同一Java EE项目的教程或示例代码。下面将详细讲解Spring和Hibernate整合的关键步骤和概念。 1. **Spring的Bean管理**:首先,Spring...

    Spring与Hibernate整合,Spring与Struts2整合源代码

    接下来是Spring与Hibernate整合,其目标是利用Spring的IoC容器管理和事务控制来协调Hibernate的数据访问。具体步骤如下: 1. 引入Hibernate的库文件,包括hibernate-core、hibernate-entitymanager、jta等。 2. ...

    spring与hibernate整合

    解压后,我们可以看到Spring和Hibernate整合的具体实现,包括实体类、DAO、Service、配置文件等。 总的来说,Spring与Hibernate的整合使得开发者可以更专注于业务逻辑,而不用过多地关心数据库交互的细节。这种集成...

    spring 与 hibernate整合

    综上所述,Spring 与 Hibernate 的整合涉及多个层面,从配置管理到事务处理,再到业务逻辑的实现,都需要精心设计和合理配置。理解这些知识点对于提升 Java 开发技能至关重要,尤其是在企业级应用开发中。通过示例...

    浅谈Spring+Hibernate整合(共16页).doc

    总之,Spring 和 Hibernate 的整合是 Java Web 开发中的常见实践,它利用 Spring 的强大管理能力和事务处理,结合 Hibernate 的 ORM 功能,简化了数据库操作和事务管理,提高了软件的可扩展性和可维护性。...

    Struts2,Spring与Hibernate整合应用,学生成绩管理系统.doc

    ### Struts2、Spring与Hibernate整合应用:学生成绩管理系统 #### 实验要求与目标概述 本实验的主要目的是实现一个学生成绩管理系统,利用Struts2、Spring与Hibernate这三个流行的Java Web开发框架进行整合,以...

    struts2+spring+hibernate 整合的jar包

    此外,Spring还提供了与Hibernate的整合模块,使得ORM操作更加便捷。 3. **Hibernate**:Hibernate是一个优秀的对象关系映射(ORM)框架,它允许开发者使用Java对象来操作数据库,而无需直接编写SQL语句。Hibernate...

    spring+hibernate整合demo

    在"标签"中,"spring 整合 hibernate helloworld"进一步强调了这是关于Spring与Hibernate整合的基础教学,可能包含了一个简单的入门级示例。"helloworld"通常表示最基础的程序,用于展示框架的基本用法。 在"压缩...

    Spring+hibernate整合源代码

    这个“Spring+hibernate整合源代码”应该包含了实现上述整合步骤的示例代码,可以作为学习和参考的资源。通过学习和实践这些代码,你可以更好地理解和掌握 Spring 和 Hibernate 整合的细节,提升你的 Java Web 开发...

    基于SSH框架的学生成绩管理系统源码+数据库,Struts2、Spring与Hibernate整合应用,实验报告

    1) 整合Struts2、Spring和Hibernate框架 (2) 实现“登录”功能 (3) 实现“学生信息管理”功能 (4) 实现“学生成绩...基于SSH框架的学生成绩管理系统源码+数据库,Struts2、Spring与Hibernate整合应用,实验报告

Global site tag (gtag.js) - Google Analytics