`
dengchangqing
  • 浏览: 53470 次
  • 性别: 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 ");     
    }
}


分享到:
评论

相关推荐

    Spring+hibernate整合源代码

    你可以使用编程式事务管理,即在代码中显式调用 begin/commit/rollback 方法,或者使用声明式事务管理,通过 @Transactional 注解来标记事务边界。 3. **数据源配置**:配置数据源是整合的起点。你需要在 Spring ...

    spring mvc + spring + hibernate 全注解整合开发视频教程 11

    在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第11部分,重点可能是建立在前几部分的基础之上,进一步深化对这三个核心技术的理解和实践。 ...

    spring+hibernate整合demo

    5. **事务配置**:Spring提供了声明式事务管理,可以在`applicationContext.xml`中配置。 6. **测试类**:如`hibernateTest`,通常会包含测试方法,检查整合是否正确,数据是否能正确存取。 在这个整合过程中,...

    Spring+Hibernate+SpringMVC+Maven整合

    通过Spring的声明式事务管理,可以简化事务控制,减少代码中的错误。而Maven则保证了项目的构建一致性,方便进行版本管理和构建自动化。 总结来说,"Spring+Hibernate+SpringMVC+Maven整合"是现代Java Web开发中的...

    spring+springMVC+Hibernate整合

    - **事务管理**:Spring提供了声明式事务管理,简化了事务的处理。 - **模型-视图-控制器**:SpringMVC的MVC设计模式清晰分离了业务逻辑、数据模型和用户界面。 - **ORM支持**:Hibernate使得Java对象与数据库表之间...

    struts+spring+hibernate三大框架整合

    2. **事务管理**:Spring提供声明式事务管理,通过`&lt;tx:annotation-driven&gt;`启用基于注解的事务管理,或在配置文件中手动配置事务规则。 3. **DAO层的实现**:Spring的`HibernateTemplate`或`HibernateOperations`...

    spring3+hibernate4配置声明式事务管理(annotation方式)

    本实例工程展示了如何在Spring 3和Hibernate 4中使用注解进行声明式事务管理,这是一种高效且易于维护的方法。接下来,我们将详细讨论相关知识点。 1. **Spring框架**:Spring是一个全面的后端开发框架,它提供了...

    spring+hibernate整合简单示例

    1. **事务管理**:Spring提供了一种声明式事务管理方式,只需在配置文件中声明事务边界,就可以在需要的地方自动进行事务管理。这样,开发者无需在每个数据库操作的方法中手动开始和结束事务,降低了代码的复杂性。 ...

    Spring + Hibernate + Spring mvc +Ajax 整合

    Spring管理Hibernate SessionFactory,提供事务控制,并能通过声明式事务管理简化事务处理。此外,Spring还支持基于注解的Hibernate配置,使代码更加简洁。 Spring MVC与Ajax的结合则提高了用户体验。Ajax...

    spring+hibernate

    Spring通过其Transaction Management(事务管理)模块与Hibernate集成,能够提供声明式事务处理,这大大简化了事务控制的复杂性。 描述中的"spring+hibernate spring配置事务"强调了Spring在管理事务方面的关键角色...

    Struts+Spring+Hibernate开发实例.pdf

    - **@Transactional** 注解通常用于Spring的Service层,用于声明式事务管理,表示一个方法的执行是在事务上下文中完成的。 - **BaseDao** 是一个泛型的DAO实现,它提供基本的数据操作,如保存、删除、更新和查询等...

    Struts + Spring + Hibernate整合开发

    例如,对于支付场景,如果使用Spring,可以声明式地配置事务属性,确保`Bean1.update()`和`Bean2.save()`在同一个事务中执行,或者无论`Bean1.update()`的事务结果如何,都执行`Bean2.save()`的操作。这样极大地简化...

    Spring+SpringMVC +Hibernate 整合

    6. 事务管理:Spring 提供了声明式事务管理,可以在配置文件中声明事务边界,由Spring自动管理事务的开始、提交、回滚。 7. 整合测试:使用JUnit进行单元测试,可以测试单独的Service或DAO方法,也可以使用MockMVC...

    struts1+spring+hibernate整合的jar包

    Spring的IoC(控制反转)容器使得对象的创建和依赖关系的维护变得简单,通过配置文件可以声明式地管理这些对象。此外,Spring的AOP功能可以用来实现事务管理,确保数据的一致性。 Hibernate作为ORM(对象关系映射)...

    spring+hibernate整合jar包

    - spring-tx:事务管理,支持编程式和声明式事务。 - spring-orm:集成ORM框架,包括Hibernate。 2. **Hibernate框架**: - hibernate-core:Hibernate的核心库,包括实体管理、查询API等。 - hibernate-...

    JSF+Spring+hibernate整合网站例子

    3. **事务管理**:Spring支持声明式和编程式的事务管理,简化了事务边界定义。 4. **MVC(模型-视图-控制器)**:Spring MVC是Spring框架的一部分,提供了一个分离业务逻辑、数据展示和用户交互的架构模式。 **...

    JSF+Spring+Hibernate整合图文教程详解

    **Spring框架**是一个轻量级的开源框架,它支持多种功能,包括依赖注入、面向切面编程(AOP)、声明式事务管理等。Spring框架在业务逻辑层中发挥着重要作用,它能够帮助开发者管理业务对象,并提供资源管理等功能,...

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

    声明式事务管理则是通过在配置文件中声明事务规则,使用 AOP 切面进行事务控制,适用于大部分情况,因为它可以实现事务的统一管理和隔离。 Spring 和 Hibernate 整合的关键步骤包括: 1. 添加 Spring 和 Hibernate ...

    seam+spring+hibernate+richfaces配置

    Spring与Hibernate集成,可以通过声明式事务管理来简化数据库操作的事务处理。 **Hibernate框架** Hibernate是一个对象关系映射(ORM)工具,它允许开发者用Java对象来操作数据库记录,而无需关心SQL语句。...

Global site tag (gtag.js) - Google Analytics