`
dengchangqing
  • 浏览: 52570 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

spring+hibernate整和配置中声明式事物管理

阅读更多
spring+hibernate整和配置中声明式事物管理,事物代理配置策略.
 
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	<!--定义数据源-->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
        <property name="url"><value>jdbc:mysql://localhost:3306/spring</value></property>
        <property name="username"><value>root</value></property>
        <property name="password"><value>32147</value></property>
    </bean>

	<!--定义一个hibernate的SessionFactory-->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource"><ref local="dataSource"/></property>
        <property name="mappingResources">
            <list>
                <!--以下用来列出所有的PO映射文件-->
				<value>Person.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
        <props>
            <!--此处用来定义hibernate的SessionFactory的属性:不同数据库连接,启动时选择create,update,create-drop-->
			<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
        </props>
        </property>
    </bean>

    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <!--  HibernateTransactionManager  bean需要依赖注入一个SessionFactory bean的引用-->
    	<property name="sessionFactory"><ref local="sessionFactory"/></property>
    </bean>

    <!--  配置事务拦截器-->
    <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <!--  事务拦截器bean需要依赖注入一个事务管理器 -->
        <property name="transactionManager" ref="transactionManager"/>
        <property name="transactionAttributes">
            <!--  下面定义事务传播属性-->
            <props>
                <prop key="insert*">PROPAGATION_REQUIRED</prop>
                <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
                <prop key="*">PROPAGATION_REQUIRED</prop>
            </props>
        </property>
	</bean>


    <!-- 定义BeanNameAutoProxyCreator,该bean是个bean后处理器,无需被引用,因此没有id属性-->
    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
	<!--  指定对满足哪些bean name的bean自动生成业务代理 -->
	    <property name="beanNames">
            <!--  下面是所有需要自动创建事务代理的bean-->
            <list>
                <value>personDao</value>
            </list>
            <!--  此处可增加其他需要自动创建事务代理的bean-->
	    </property>
        <!--  下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
        <property name="interceptorNames">
            <list>
                <value>transactionInterceptor</value> 
                    <!-- 此处可增加其他新的Interceptor -->
            </list>
        </property>
    </bean>



    <!--定义DAO Bean ,由于BeanNameAutoProxyCreator自动生成事务代理-->
	<bean id="personDao" class="lee.PersonDaoHibernate">
        <property name="sessionFactory"><ref local="sessionFactory"/></property>
    </bean>


</beans>

测试代码
package lee;

import java.util.Collection;
import java.util.List;

import org.hibernate.SessionFactory;
import org.hibernate.HibernateException;
import org.hibernate.Session;

import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;


import javax.sql.DataSource;
import org.springframework.jdbc.datasource.DataSourceUtils;

/**
 * @author  yeeku.H.lee kongyeeku@163.com
 * @version  1.0
 * <br>Copyright (C), 2005-2008, yeeku.H.Lee
 * <br>This program is protected by copyright laws.
 * <br>Program Name:
 * <br>Date: 
 */

//完全可以不需要MPersonDao接口,直接使用类,但这样是面向接口的编程。
public class PersonDaoHibernate extends HibernateDaoSupport implements PersonDao
{
    /**
      * 加载人实例
      * @param id 需要加载的Person实例的主键值
      * @return 返回加载的Person实例
      */ 
    public Person get(int id)
    {
        return (Person)getHibernateTemplate().get(Person.class, new Integer(id)); 
    }

    /**
      * 保存人实例
      * @param person 需要保存的Person实例
      */    
    public void save(Person person)
    {
        getHibernateTemplate().save(person);
        DataSource ds = null;
        DataSourceUtils.getConnection(ds);
    }

    /**
      * 修改Person实例
      * @param person 需要修改的Person实例
      */
    public void update(Person person)
    {
        getHibernateTemplate().update(person);
    }

    /**
      * 删除Person实例
      * @param id 需要删除的Person价id
      */
    public void delete(int id)
    {
        getHibernateTemplate().delete(getHibernateTemplate().get(Person.class, new Integer(id)));
    }

    /**
      * 删除Person实例
      * @param person 需要删除的Person实例
      */
    public void delete(Person person)
    {
        getHibernateTemplate().delete(person);
    }

    /**
      * 根据用户名查找Person
      * @param name 用户名
      * @return 用户名对应的全部用户
      */
    public List findByPerson(String name)
    {
        return getHibernateTemplate().find("from Person p where p.name like ?" , name);        
    }

    /**
	  * 返回全部的Person实例
	  * @return 全部的Person实例
	  */
    public List findAllPerson()
    {
        return getHibernateTemplate().find("from Person ");     
    }
}


分享到:
评论

相关推荐

    struts+spring+hibernate三大框架整合

    ssh三大框架的整合步骤,非常详细。包含spring整合struts、spring整合hibernate、声明式事务说明等。

    struts+spring+hibernate整合

    Spring4.0、Struts2.3.15、Hibernate4.2.4、jQuery1.9.1涉及到了诸多开发时的细节:ModelDriven、Preparable 拦截器、编写自定义的类型转换器、Struts2 处理 Ajax、OpenSessionInViewFilter、迫切左外连接、Spring ...

    ssh整合+spring声明式事务

    struts2+spring+hibernate ssh 整合+spring声明式事务管理

    struts1.2+spring2.0+hibernate3.2 整合源码

    1、struts1.2+spring 2.0+...2、struts的动作交由spring来管理,hibernate的配置集中在spring中配置。 3、增加了声明式事务处理,加强了hibernateTemplate的简单事务处理。 4、完整的Myeclipse的工程文件,测试可用!

    最新版本的Struts2+Spring4+Hibernate4三大框架整合(改进:增加整合Quartz和Gson)

    一、 项目名称:S2316S411H436 项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 + Quartz2.2.1 二、 项目目的: 整合使用最新版本的三大...(3) 提供两种声明式事务管理器方案:二选一,请注释或删除其他方案

    spring-hibernate整合实例

    spring整合hibernate 1、用spring IOC容器管理hibernate的sessionFactory;2、hibernate使用spring的声明式事务管理;

    Struts2.1.6+Struts2.0+Hibernate3.1整合示例

    开发环境:Windows XP sp3、SQL Server 2005、JDK 1.6、Struts2.1.6、Spring 2.0、Hibernate...至于声明式事务部分,你可以参见另外一个资源“Spring 2.0 + Struts 1.2 + Hibernate 3.2 + DWR 2.0 的JavaEE应用示例”

    spring2.5.6与hibernate3.3整合示例

    spring2.5.6与hibernate3.3整合示例,导入即可运行。运用注解、hibernateTemplate、声明式事务管理。包括所有需要jar包。

    Spring整合Hibernate

    Spring4整合Hibernate4实现用户购买图书和结账等操作,整合主要实现用IoC容器来管理Hibernate的SessionFactory实例,并使Hibernate使用Spring所提供的声明式事务……

    spring声明式事务管理

    1.掌握Myeclipse的使用。 2.掌握spring框架和hibernate框架的使用。 3. 掌握整合spring和hibernate的持久化操作编程 4.掌握基于AOP的声明式事务编程...3.配置WEB-INF/applicationContext.xml提供基于AOP的声明式事务

    第24次课-1 Spring与Hibernate的整合

    方便的事务管理:Spring提供的声明式事务处理可以全面有效地处理事务。 异常包装:Spring能够包装Hibernate的异常,使开发者可以选择恰当的层来处理异常。 24.2 管理SessionFactory Hibernate的SessionFactory,是...

    spring,hibernate整合实现事务管理(MethodInterceptor)

    NULL 博文链接:https://88548886.iteye.com/blog/1528486

    详细解释Spring与Hibernate的整合原理

    spring与hibernate的整合目的就是为了让 IOC 容器来管理 Hibernate 的核心接口SessionFactory以及让 Hibernate 使用上 Spring 的声明式事务来进行事务操作.  但在Spring整合Hibernate时。处理数据源有两种方法:  1...

    Spring3.x_Struts2.x_Hibernate3.x整合之声明式事务配置

    但是通常都会在Service中来处理多个业务逻辑的关系,如:删除,更新等,此时如果在执行了一个步骤之后抛出抛出异常就会导致数据部完整,所以事务不应该在Dao中处理,而应该在Service中处理,这也是就是Spring提供的...

    Struts-Spring-Hibernate框架整合

    大名鼎鼎的SSH框架整合,有详细的步骤。为本人多年教学总结出来的方案,包含声明式事务。珍品啊。

    Spring框架 jar 架包 spring开发文档详解

    Spring BeanFactory Spring IOC(控制翻转)/DI(依赖注入) Spring Proxy Spring AOP 面向切面编程 Spring与JDBC整合 Spring声明式事务 Spring与Hibernate整合 Spring与Struts整合

    Spring声明式事务处理.wrf

    这是一个是Spring整合Hibernate的视频教程,该教程详细的讲叙了,如何整合Spring和Hibernate。提示需要commons-dbcp.jar、commons-pool.jar、spring.jar三个包。

    spring3.2中文文档

    spring3.2框架是一个轻量级的解决方案和...spring 框架支持声明式事务管理、远程访问 你的逻辑通过RMI或web服务,以及各种选项 坚持你的数据。 它提供了一个功能全面的 MVC框架 ,并允许您 整合 aop 透明地进 你的软件。

    尚硅谷佟刚Spring4代码及PPT.rar

    JdbcDaoSupport、使用 NamedParameterJdbcTemplate、Spring 的声明式事务、事务的属性(传播行为、隔离级别、回滚属性、只读属性、过期时间)、使用 XML 文件的方式配置事务、整合 Hibernate、整合 Struts2 等。

Global site tag (gtag.js) - Google Analytics