`
jiayj198609
  • 浏览: 150035 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Spring整合Hibernate的步骤

阅读更多
为什么要整合Hibernate?
1、使用Spring的IOC功能管理SessionFactory对象
LocalSessionFactoryBean
2、使用Spring管理Session对象
HibernateTemplate
3、使用Spring的功能实现声明式的事务管理

整合Hibernate的步骤:
1、配置SessionFactory(可以自动完成)
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
   value="classpath:hibernate.cfg.xml">
</property>
</bean>

2、配置HibernateTemplate,用于完成数据操作
<bean id="hibernateTemplete" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

3、让Common继承HibernateDaoSupport类,该类提供了HibernateTemplate的getter和setter方法。

4、将hibernateTemplete注入到Common中
<bean id="common" class="com.aptech.common.Common">
<property name="hibernateTemplate" ref="hibernateTemplete"></property>
</bean>

5、将Common的方法修改成hibernateTemplete的操作。
package com.aptech.common;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.aptech.exception.CommonException;
import com.aptech.htm.HibernateSessionFactory;
/**
* 通用类,不再负责事务处理
* 目标对象
* @author 李赞红
*
* @param <POJO>
*/
public class Common<POJO> extends HibernateDaoSupport implements ICommon<POJO> {
public void insertObject(POJO pojo) throws CommonException {
try {
   this.getHibernateTemplate().save(pojo);
} catch (DataAccessException e) {
   e.printStackTrace();
   throw new CommonException(e);
}
}

public void updateObject(POJO pojo) throws CommonException {
try {
   this.getHibernateTemplate().update(pojo);
} catch (DataAccessException e) {
   e.printStackTrace();
   throw new CommonException(e);
}
}

public void deleteObject(Class theClass, long id) throws CommonException {
try {
   Object obj = this.getHibernateTemplate().load(theClass, id);
   this.getHibernateTemplate().delete(obj);
} catch (DataAccessException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   throw new CommonException(e);
}
}

public POJO loadObject(Class theClass, long id) throws CommonException {
try {
   Object obj = this.getHibernateTemplate().load(theClass, id);
   return (POJO) obj;
} catch (DataAccessException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   throw new CommonException(e);
}
}

public List queryObjects(final String hql) throws CommonException {
class Hc implements HibernateCallback{
   public Object doInHibernate(Session session)
     throws HibernateException, SQLException {
    return session.createQuery(hql).list();
   }
}

try {
   return this.getHibernateTemplate().executeFind(new Hc());
} catch (DataAccessException e) {
   e.printStackTrace();
   throw new CommonException(e);
}
}

public List queryObjects(Class theClazz) throws CommonException {
return this.queryObjects("from " + theClazz.getSimpleName());
}
}

6、配置事务
<!-- 事务管理器,相当于TransactionProxy,定义事务的开启、提交、回滚 -->
<bean id="htm" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
   <ref bean="sessionFactory"/>
</property>
</bean>
<bean id="ti" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager">
   <ref bean="htm"/>
</property>
<property name="transactionAttributes">
   <props>
    <!-- key:方法名称 -->
    <prop key="insert*">PROPAGATION_REQUIRED</prop>
    <prop key="update*">PROPAGATION_REQUIRED</prop>
    <prop key="delete*">PROPAGATION_REQUIRED</prop>
    <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
   </props>
</property>
</bean>
<!-- 自动代理,代理业务对象 -->
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
   <list>
    <value>common</value>
   </list>
</property>
<property name="interceptorNames">
   <list>
    <value>ti</value>
   </list>
</property>
</bean>


7、将common注入Dao
<bean id="baseDao" abstract="true">
<property name="common">
   <ref bean="common"/>
</property>
</bean>

<bean id="udao" class="com.aptech.dao.impl.UserDao" parent="baseDao"></bean>
<bean id="rdao" class="com.aptech.dao.impl.RoleDao" parent="baseDao"></bean>

8、将Dao注入Service
<bean id="grantService" class="com.aptech.service.impl.GrantService">
<property name="rdao" ref="rdao"></property>
<property name="udao" ref="udao"></property>
</bean>


分享到:
评论

相关推荐

    spring整合hibernate示例代码

    标题"spring整合hibernate示例代码"提示我们,我们将讨论如何在实际项目中结合这两个框架。Spring可以帮助管理Hibernate的SessionFactory和Transaction,提供声明式事务管理,以及通过AOP(面向切面编程)实现更灵活...

    Spring整合Hibernate.jar

    标题"Spring整合Hibernate.jar"意味着我们将讨论如何将这两个强大的框架集成在一起,以便在Spring管理的环境中使用Hibernate进行数据库操作。这通常涉及到以下步骤和知识点: 1. **引入依赖**:首先,你需要在项目...

    Spring+hibernate整合源代码

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

    Spring与Hibernate整合

    SSH整合,即Struts、Spring和Hibernate的集成,是Java Web开发中常见的一种技术栈,它能有效地解决MVC模式下的业务逻辑处理和数据持久化问题。本篇将详细介绍Spring3.3与Hibernate2.1整合的过程及其相关知识点。 ...

    Spring整合Hibernate案例

    在本文中,我们将深入探讨如何将Spring框架与Hibernate ORM(对象...通过以上步骤,我们可以成功地将Spring与Hibernate整合,实现高效的数据访问层。这个案例旨在帮助初学者理解整合过程,并为实际项目开发提供参考。

    spring整合hibernate所用相关jar包

    本文将深入探讨Spring整合Hibernate的相关知识点,适合初学者入门。 首先,我们需要理解Spring的核心理念。Spring框架提供了一个轻量级的容器,它能够管理应用程序中的对象,包括初始化、配置和依赖注入。AOP则是...

    spring整合hibernate实例

    这篇名为"spring整合hibernate实例"的内容,显然是关于如何将这两个框架协同工作,构建一个高效、灵活的Java应用的教程。在整合过程中,我们将探讨以下几个关键知识点: 1. **Spring的ApplicationContext**: 这是...

    struts2+spring+hibernate整合步骤

    6. **整合Spring和Hibernate**:在Spring配置文件中配置SessionFactory,注入Hibernate的相关配置。 7. **测试**:通过编写测试用例验证整合是否成功,确保请求能正常流转,数据库操作无误。 整合Struts2、Spring...

    Spring整合HIbernate

    《Spring整合Hibernate实战指南》 在Java开发领域,Spring框架以其强大的依赖注入、AOP(面向切面编程)以及丰富的模块支持,成为了企业级应用开发的首选。而Hibernate作为持久层框架,以其对象关系映射(ORM)能力...

    Spring+Hibernate+Strust 整合开发步骤

    以下是对Spring、Hibernate、Struts整合开发步骤的详细解释: 1. **创建J2EE Web工程** 在MyEclipse 5.0 GA环境下,首先我们需要创建一个新的J2EE Web工程,这是所有后续操作的基础。 2. **配置数据源** 数据源...

    hibernate与spring整合demo

    将Hibernate与Spring整合可以充分利用两者的优点,提高开发效率并降低复杂性。 一、Hibernate概述 Hibernate是Java世界中领先的ORM框架之一,它允许开发者用Java对象来操作数据库记录,而无需编写SQL语句。通过配置...

    Spring整合Hibernate 详解.doc

    Spring整合Hibernate是现代Java开发中常见的一种技术组合,利用Spring框架的强大功能来管理和协调Hibernate的持久化操作。Spring为Hibernate提供了全面的集成方案,简化了DAO(Data Access Object)的开发,同时也...

    springmvc spring hibernate整合Demo

    在整合Spring MVC、Spring和Hibernate时,通常步骤如下: 1. 配置Spring:首先,我们需要配置Spring的ApplicationContext,定义Bean并管理它们的生命周期。这通常通过XML或Java配置完成,包括Spring MVC的...

    spring_hibernate整合实例

    当我们谈论"spring_hibernate整合实例"时,意味着我们将这两个框架结合在一起,以实现更高效、更模块化的后端开发。 首先,Spring和Hibernate的整合主要涉及以下几个核心概念: 1. **依赖注入(DI)**:Spring的...

    spring整合hibernate与struts2所需jar包

    标题"spring整合hibernate与struts2所需jar包"表明我们需要关注的是如何将这三个框架整合在一起,并且提供了所需的一些基础组件。整合SSH可以让开发者利用Spring的管理能力,让Hibernate更易于使用,同时通过Struts2...

    struts2+spring+hibernate 整合的jar包

    6. **整合Hibernate和Spring**:使用Spring的Hibernate支持,配置SessionFactory,可以通过`&lt;bean&gt;`标签创建SessionFactory并注入到需要的地方。 7. **测试**:编写单元测试和集成测试,验证SSH整合是否成功,确保...

    ZK+spring+hibernate的整合

    整合ZK、Spring和Hibernate的过程主要分为以下几个步骤: 1. **配置Spring**:首先,我们需要配置Spring的IoC容器,定义Bean的定义文件,包括ZK组件、Hibernate的SessionFactory以及数据源等。 2. **集成Hibernate...

    spring和hibernate整合

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

Global site tag (gtag.js) - Google Analytics