`
kidiaoer
  • 浏览: 824723 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

spring和Hibernate集成

阅读更多

spring和Hibernate集成

spring能够简单的集成hibernate应用,spring的hibernate集成使用一般的事物框架和dao例外处理层次,这些都可以用在JDBC,JDO,IBATIS,和TOPLINK,可以使这些持续化方法的融合变得更加容易。
有两种spring的hibernate集成方法:
#使用HibernateTemplate和Callback反转控制。
#扩充HibernateDaoSupport和使用AOP拦截
IOC/HibernateTemplate方法和使用JdbcTemplate方法大致相同,这边我们使用HibernateDaoSupport/AOP方法。
在编写完标准的Hibernate映射文件之后,你需要做三件事:
1。配置Hibernate SessionFactory。
2。扩充DAO实施继承HibernateDaoSupport
3。使用AOP混合事物支持
这里是一个映射文件:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="model">
  <class name="Widget" table="WIDGETS">
    <id name="id" column="WIDGET_ID" type="long">
      <generator class="native"/>
    </id>
    <property name="name" column="NAME" type="string"/>
    <property name="size" column="SIZE" type="int"/>
  </class>
</hibernate-mapping>
这是一个非常普通的映射文件,Widget是一个普通的对象(没有集合,没有其他对象引用)现在我们配置SessionFactory:
这边是一个普通的spring SessionFactory配置,使用这个文件来替代以前的hibernate-config.xml文件。
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="mappingResources">
      <list>
        <value>Widget.hbm.xml</value>
      </list>
    </property>
  </bean>
如果在类路径中有hibernate.properties文件,spring 的LocalSessionFactoryBean将使用这个文件配置数据库联接,dialect和连接池。你可以在spring中定义 DataSource并且显示的在LocalSessionFactoryBean中定义。
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="mappingResources">
      <list>
        <value>Widget.hbm.xml</value>
      </list>
    </property>
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
      </props>
    </property>
    <property name="dataSource">
      <ref bean="dataSource"/>
    </property>
  </bean>
  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName"><value>org.hsqldb.jdbcDriver</value></property>
    <property name="url"><value>jdbc:hsqldb:mem:widgets</value></property>
    <property name="username"><value>sa</value></property>
    <property name="password"><value></value></property>
  </bean>
在实际的DAO实施中继承HibernateDaoSupport。
spring 的HibernateDaoSupport提供了所有方便的方法来和Hibernate交互,大部分都可以通过HibernateTemplate对象来访问。
请注意,Hibernate2使用检查例外HibernateException但是Hibernate3使用运行时例外。这里使用Hibernate3并且抛出运行时例外。但是比较适合的是在这里进行合适的例外处理。
 public class WidgetDAOHibernateImpl extends HibernateDaoSupport implements WidgetDAO {
  public Collection getWidgets() {
   return getHibernateTemplate().loadAll(Widget.class);
  }
  public Widget getWidgetById(Long id) {
   return (Widget)getHibernateTemplate().load(Widget.class,id);
  }
  public Widget saveWidget(Widget widget) {
   getHibernateTemplate.saveOrUpdate(widget);
   return widget;
  }
 }
如果需要使用事物管理,就需要将DAO和 HibernateINterceptor联合起来,这个拦截器绑定了一个新的Hibernate Session到当前线程,当方法返回时关闭和移出这个会话。如果已经有一个已绑定的会话,拦截器简单的让它加入。注意实际的“widgetDAO”定义为一个代理对象,这个对象指向实际的接口实施"widgetDaoTarget"。
<!-- THE HIBERNATE INTERCEPTOR -->
  <bean id="hibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor">
    <property name="sessionFactory">
      <ref bean="sessionFactory"/>
    </property>
  </bean>
  <bean id="widgetDaoTarget" class="WidgetDAOHibernateImpl">
    <property name="sessionFactory">
      <ref bean="sessionFactory"/>
    </property>
  </bean>
  <bean id="widgetDAO" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="proxyInterfaces">
      <value>com.zabada.springrecipes.base.WidgetDAO</value>
    </property>
    <property name="interceptorNames">
      <list>
        <value>hibernateInterceptor</value>
        <value>widgetDaoTarget</value>
      </list>
    </property>
  </bean>

  
  
分享到:
评论

相关推荐

    spring和hibernate集成Demo

    这篇关于"Spring和Hibernate集成Demo"的内容将深入探讨这两者如何协同工作,以及如何构建一个集成的小型项目。 **Spring框架** Spring的核心是依赖注入(Dependency Injection,DI),它允许开发者通过配置文件或...

    xfire跟spring和hibernate集成例子

    将XFire、Spring和Hibernate集成,我们可以创建一个服务,该服务能够通过SOAP接口接收请求,然后利用Spring的管理能力调用Hibernate持久化操作来处理业务逻辑。以下是集成的步骤: 1. **配置Spring**:首先,我们...

    spring和hibernate集成后,通用的basedao

    当Spring和Hibernate集成时,Spring可以管理Hibernate的SessionFactory和Session对象,避免了手动创建和关闭Session,减少了资源泄露的风险。Spring还提供了HibernateTemplate或JPA的EntityManagerFactory,进一步...

    Spring与Hibernate集成

    **Spring与Hibernate集成详解** 在Java企业级应用开发中,Spring和Hibernate是两个非常重要的框架。Spring是一个全方位的轻量级应用框架,提供了强大的依赖注入、AOP(面向切面编程)以及各种服务管理功能。而...

    Spring与Hibernate集成授课代码

    本"Spring与Hibernate集成授课代码"资源旨在教授如何将这两个框架整合在一起,实现高效的数据访问和业务逻辑处理。集成Spring和Hibernate能够帮助开发者充分利用两者的优点,比如Spring的事务管理与Hibernate的数据...

    第六章 Spring与Hibernate集成声明式事务.ppt

    Spring与Hibernate集成声明式事务.ppt

    spring 与hibernate的集成

    接下来,我们会在`applicationContext.xml`中配置数据源,这是Spring与Hibernate集成的基础。数据源(`dataSource`)通常使用Apache Commons DBCP库,因为它提供了连接池功能,能有效管理数据库连接,提高性能。配置...

    Struts、Spring、Hibernate集成

    ### Struts、Spring、Hibernate集成应用详解 #### 一、集成背景与意义 在现代企业级应用开发中,为了提高软件系统的灵活性、可维护性和扩展性,常常采用分层架构设计模式。Struts、Spring 和 Hibernate 作为 Java ...

    Spring与Hibernate集成---声明式事务

    总结来说,Spring与Hibernate的集成使我们可以轻松地在应用程序中管理数据访问和事务,同时保持代码的整洁和模块化。声明式事务管理让开发者专注于业务逻辑,而无需关心事务控制的细节,提高了开发效率和代码质量。...

    Webwork+spring+hibernate集成实例

    在Webwork+Spring+Hibernate集成中,Spring通常作为整体架构的胶水,负责各组件的连接和协调。它可以管理Webwork的Action,通过依赖注入提供所需的Service和DAO。同时,Spring可以配置Hibernate SessionFactory,...

    struts2 spring hibernate集成

    集成Struts2、Spring和Hibernate时,需要注意配置文件的正确设置,包括Action配置、Spring Bean的定义、Hibernate的数据库连接和实体映射。同时,理解这三个框架的工作原理和相互作用,对于解决问题和优化代码至关...

    Struts2,spring,Hibernate集成

    总的来说,Struts2、Spring 和 Hibernate 集成使得开发者能更高效地开发和维护大型Java Web应用。它们各自专注于特定的职责,共同构建出松散耦合、模块化的系统,降低了复杂性,提高了开发效率和代码质量。在实际...

    spring-hibernate jar包

    在 Spring 和 Hibernate 集成中,c3p0 可以作为数据源配置,用于管理数据库连接,避免频繁创建和关闭连接带来的性能开销。 在实际应用中,开发者通常会使用 Spring 的 `LocalSessionFactoryBean` 来配置 Hibernate ...

    spring+hibernate

    在ODshop这个项目中,我们可能可以看到如何在Spring和Hibernate集成的环境中设置事务,包括如何配置DataSource、SessionFactory、HibernateTemplate或JPA的EntityManagerFactory,以及如何处理事务的回滚和提交。...

    ssh集成jar包,支持spring集成Hibernate,spring集成struts2等

    - Spring与Hibernate集成,通常使用Spring的HibernateTemplate或HibernateDaoSupport,提供事务管理和数据访问抽象,使得代码更简洁,事务控制更方便。 - Spring与Struts2集成,Spring可以作为Struts2的Action的...

    Spring2 Hibernate3集成

    ### Spring2 Hibernate3集成知识点详解 #### 一、Spring与Hibernate简介 - **Spring框架**:作为一款轻量级的Java开发框架,Spring的核心特性包括依赖注入(DI)和面向切面编程(AOP),这使得它在企业级应用开发...

    声明式事务控制spring+hibernate集成

    当Spring与Hibernate集成时,Spring可以负责事务的管理,而Hibernate则专注于数据持久化。 在"声明式事务控制,spring2.5+hibernate3集成源码"中,开发者可以学习如何配置Spring的事务管理器,以及如何在Hibernate...

    spring和hibernate框架

    在使用 Spring 和 Hibernate 进行项目开发时,MyEclipse 是一个常用的集成开发环境(IDE)。MyEclipse 提供了对 Spring 和 Hibernate 的良好支持,包括自动配置、代码生成、调试等功能,使得开发者可以快速构建基于...

    JSF集成Spring、Hibernate

    在描述中提到的 **jar包完整版** 指的是为了运行JSF、Spring和Hibernate集成的项目,需要包含所有相关的库文件,如JSF的实现库、Spring的核心库、Hibernate的JAR文件,以及可能需要的其他依赖,如JDBC驱动(对于连接...

    spring hibernate集成

    将Spring与Hibernate集成的主要目标是利用Spring的强大管理能力来控制Hibernate的数据访问层,实现事务管理、DAO(数据访问对象)工厂以及SQL查询的封装,从而提高代码的可维护性和灵活性。 **2. 配置环境:** 首先...

Global site tag (gtag.js) - Google Analytics