为什么要整合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整合详解》 在现代Java Web开发中,Spring和Hibernate是两个非常重要的开源框架,它们分别在依赖注入和对象关系映射(ORM)领域有着广泛的应用。Spring作为一个全面的轻量级应用框架,提供了...
这个简单的示例展示了Spring和Hibernate整合的基本流程,实际项目中可能还需要考虑更多的细节,如异常处理、事务策略等。 总结来说,Spring与Hibernate的整合使得Java开发人员能够更方便地管理数据库操作,并利用...
这个“Spring+hibernate整合源代码”应该包含了实现上述整合步骤的示例代码,可以作为学习和参考的资源。通过学习和实践这些代码,你可以更好地理解和掌握 Spring 和 Hibernate 整合的细节,提升你的 Java Web 开发...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自解决应用程序的不同问题,而将这三者整合在一起可以构建高效、灵活的企业级应用。Struts2作为MVC(Model-View-Controller)框架,负责处理用户请求...
总的来说,这个压缩包为开发者提供了一个完整的Spring和Hibernate整合环境,省去了寻找和管理依赖项的麻烦,使得开发人员可以更专注于业务逻辑的实现,提高开发效率。在实际开发中,只需根据项目的具体需求,合理...
标题"spring+hibernate整合demo"表明这是一个示例项目,展示了如何将Spring和Hibernate这两个框架结合使用。整合Spring和Hibernate可以使应用程序更易于管理,因为Spring可以控制Hibernate的生命周期,并提供事务...
通过以上步骤,一个基本的Struts、Spring和Hibernate整合的应用就搭建完成了。这个整合的关键在于Struts处理HTTP请求,Spring管理业务对象和依赖,而Hibernate则处理数据库操作。这样的架构可以实现松耦合,便于代码...
本文将深入探讨如何将Spring与Hibernate整合,以及在实际应用中如何利用Spring的HibernateTemplate进行数据操作。 首先,让我们理解Spring与Hibernate整合的基本原理。整合的主要目标是利用Spring的IoC容器管理...
总之,Spring 和 Hibernate 的整合是 Java Web 开发中的常见实践,它利用 Spring 的强大管理能力和事务处理,结合 Hibernate 的 ORM 功能,简化了数据库操作和事务管理,提高了软件的可扩展性和可维护性。...
3. **Spring与Hibernate整合** - **事务管理**:Spring可以接管Hibernate的事务管理,通过PlatformTransactionManager接口实现声明式事务管理,使得事务控制更为简洁。 - **SessionFactory的获取**:Spring通过...
在Java企业级开发中,Spring框架和Hibernate框架的整合是常见的技术栈选择,它们能够帮助开发者构建高效、灵活且易于维护的后端系统。本文将深入探讨如何在JavaEE项目中整合Spring和Hibernate,以及hibernate.cfg....
"Spring与Hibernate整合"是为了实现业务逻辑层和数据访问层的高效协作。整合过程通常包括以下几个步骤: 1. **引入依赖**:首先,需要在项目中添加Spring和Hibernate的相关库。这通常通过Maven或Gradle的依赖管理来...
总结起来,"spring-Hibernate整合代码测试过程"涉及了Spring框架的依赖注入、事务管理、以及与Hibernate的整合,同时也涵盖了Hibernate的实体映射、DAO设计和事务控制。通过这个过程,我们可以构建出一个高效、健壮...
在"25_黑马程序员_黎活明_Spring2.5视频教程_搭建和配置Spring与Hibernate整合的环境.avi"这个文件中,可能详细演示了如何配置这些库到项目的类路径中。 接着,需要配置Spring的IoC容器。这可以通过XML配置文件完成...
### Spring与Hibernate整合的优化配置 #### 一、Spring与Hibernate简介 - **Spring框架**:作为Java开发领域中的一款主流轻量级框架,Spring主要提供了依赖注入(DI)和面向切面编程(AOP)的功能,使得Java开发...
通过以上步骤,我们可以成功地将Spring MVC、Spring和Hibernate整合在一起,实现一个完整的登录功能。这样的实例不仅有助于学习者理解各框架的协同工作方式,而且为实际项目提供了可复用的基础结构。在实践中,还...
综上所述,这个压缩包文件提供的内容很可能是关于Spring和Hibernate整合的一个实例教程,涵盖了SSH集成的基本步骤,包括框架的配置、实体模型设计、持久化操作以及事务管理。对于想要学习或加深理解SSH整合的开发者...
5. **整合Spring和Hibernate**:在Spring的配置文件中,定义Hibernate的SessionFactory bean,并配置事务管理器。使用`LocalSessionFactoryBean`来创建SessionFactory,通过`HibernateTransactionManager`进行事务...