`
java风
  • 浏览: 57358 次
  • 来自: 北京
社区版块
存档分类
最新评论
  • 泛泛evil: 总结的很好,谢谢分享
    JavaScript
  • wanxkl: 哇!总结的太好了。。凤哥哥,你好强大啊。。请问您跟凤姐什么关系 ...
    css应用

Hibernate声明事务

    博客分类:
  • java
阅读更多

事务处理

第一种方式:

首先配置datasoure

<bean id="myDataSource"

       class="org.apache.commons.dbcp.BasicDataSource"

       destroy-method="close">

       <property name="driverClassName">

           <value>com.mysql.jdbc.Driver</value>

       </property>

       <property name="url">

           <value>jdbc:mysql://localhost:3306/punish</value>

       </property>

       <property name="username">

           <value>root</value>

       </property>

       <property name="password">

           <value>passok</value>

       </property>

    </bean>

 

第二步配置sessionFactory

 

<bean id="sessionFactory"

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

       <property name="dataSource" ref="myDataSource"></property>

       <!-- 定义HibernateSession Factory属性 -->

       <property name="hibernateProperties">

           <props>

              <prop key="hibernate.show_sql">true</prop>

              <prop key="hibernate.dialect">

                  org.hibernate.dialect.MySQLDialect

              </prop>

           </props>

       </property>

       <property name="mappingResources">

           <list>

              <!-- 列出所有的映射文件 -->

              <value>com/spring/step1/pojo/Account.hbm.xml</value>

              <value>com/spring/step1/pojo/Loginfo.hbm.xml</value>

           </list>

       </property>

    </bean>

 

第三步;配置txManager

<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

    <property name="sessionFactory" ref="sessionFactory" />

</bean>

第四步定义事务拦截器bean,并注入txManager

<bean id="txInterceptor"

class="org.springframework.transaction.interceptor.TransactionInterceptor">

        <property name="transactionManager">

            <ref local="txManager" />

        </property>

        <property name="transactionAttributes">

            <props>

                <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>

                <prop key="*">PROPAGATION_REQUIRED</prop>

            </props>

        </property>

    </bean>

 

最后定义定义BeanPostProcessorbean

<bean id="autoProxy"

class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">

        <property name="beanNames">

            <!—把所有需要事务的bean的名字列在下面 -à

            <list>

                <value>transferService</value>

            </list>

        </property>

        <property name="interceptorNames">

            <list>

                <value>txInterceptor</value>

            </list>

        </property>

    </bean>

 

 

 

 

 

 

 

 

 

 

第二种方式:

第零步:添加aspectj这个目录下的两个jar

第一步改换Application Content 文件头

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:aop="http://www.springframework.org/schema/aop"

    xmlns:tx="http://www.springframework.org/schema/tx"

    xsi:schemaLocation="

       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd

       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

 

 

第二步配置datasoure

<bean id="myDataSource"

       class="org.apache.commons.dbcp.BasicDataSource"

       destroy-method="close">

       <property name="driverClassName">

           <value>com.mysql.jdbc.Driver</value>

       </property>

       <property name="url">

           <value>jdbc:mysql://localhost:3306/punish</value>

       </property>

       <property name="username">

           <value>root</value>

       </property>

       <property name="password">

           <value>passok</value>

       </property>

    </bean>

 

 

 

 

 

 

 

 

 

 

第三步配置sessionFactory

 

<bean id="sessionFactory"

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

       <property name="dataSource" ref="myDataSource"></property>

       <!-- 定义HibernateSession Factory属性 -->

       <property name="hibernateProperties">

           <props>

              <prop key="hibernate.show_sql">true</prop>

              <prop key="hibernate.dialect">

                  org.hibernate.dialect.MySQLDialect

              </prop>

           </props>

       </property>

       <property name="mappingResources">

           <list>

              <!-- 列出所有的映射文件 -->

              <value>com/spring/step1/pojo/Account.hbm.xml</value>

              <value>com/spring/step1/pojo/Loginfo.hbm.xml</value>

           </list>

       </property>

    </bean>

 

第四步配置txManager

<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

    <property name="sessionFactory" ref="sessionFactory" />

</bean>

 

 

第五步:

 

 

 

 

 

 

 

 

 

 

<tx:advice id="txAdvice" transaction-manager="txManager">

       <tx:attributes>

           <!-- all methods starting with 'get' are read-only -->

<tx:method name="get*" read-only="true" />

<!-- other methods use the default transaction settings (see below) -->

<tx:method name="*" />

       </tx:attributes>

</tx:advice>

 

<aop:config>

    <aop:pointcut id="fooServiceOperation"

expression="execution(* com.spring.step4.dao.service.impl.*.*(..))" />

    <aop:advisor advice-ref="txAdvice"

       pointcut-ref="fooServiceOperation" />

</aop:config>

分享到:
评论

相关推荐

    Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)

    在Spring中,你可以为特定的类或方法声明事务属性,如事务的传播行为、隔离级别、是否回滚等。这些配置通常在Spring的XML配置文件中完成,或者使用Java配置类进行。当一个方法被标记为@Transactional,Spring会在...

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

    总的来说,Spring 3和Hibernate 4结合使用声明式事务管理,使得我们无需在代码中显式调用事务开始、提交和回滚,而是通过注解和配置文件来声明事务的边界和行为。这种方式降低了代码的复杂度,提高了可维护性和可...

    Spring+Hibernate 声明式事务

    本资源主要是结合博文 Spring+Hibernate: 声明式事务 http://blog.csdn.net/ManagementAndJava/article/details/78050519 的源代码,主要是讲解了spring4.3和hibernate5.2.11集成实现原理;

    Spring+Hibernate注解事务实例

    本实例将深入探讨如何结合Spring的注解声明式事务管理与Hibernate的数据访问技术,构建一个完整的事务处理系统。 Spring框架以其灵活的依赖注入(DI)和面向切面编程(AOP)闻名,它允许开发者将事务管理从业务逻辑...

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

    2. **声明事务边界**:在需要事务控制的方法上添加@Transactional注解,指定事务的传播行为、隔离级别、读写模式等属性。 3. **创建事务代理**:对于需要事务控制的业务服务,使用TransactionProxyFactoryBean创建...

    Spring Hibernate事务实例

    本教程将深入探讨如何在Spring框架中利用`TransactionInterceptor`进行声明式事务管理,与Hibernate集成实现高效的数据库事务控制。 首先,了解事务管理是至关重要的。事务是一组数据库操作,这些操作要么全部成功...

    spring mvc+hibernate实现事务管理(配置文件版)

    本项目是关于如何使用Spring MVC与Hibernate结合来实现事务管理的实践教程,通过MyEclipse自动生成所需的包和配置文件。这里将详细讲解这一过程,以及涉及到的关键知识点。 首先,Spring MVC作为Spring框架的一部分...

    Spring Hibernate 事务处理 详细说明

    总结起来,Spring和Hibernate的事务处理涉及了Spring的声明式事务管理、事务的传播行为、隔离级别以及回滚规则等概念。通过整合这两者,我们可以构建高效、健壮的企业级应用程序,确保数据的完整性和一致性。了解并...

    在Spring中配置Hibernate事务

    编程式事务管理需要在代码中显式调用开始、提交、回滚等事务操作,而声明式事务管理则通过在XML或注解中声明事务边界,让Spring自动进行事务管理。在大多数情况下,声明式事务管理更为推荐,因为它降低了代码的耦合...

    spring整合hibernate实现事务处理

    本篇文章将详细探讨如何通过Spring整合Hibernate来实现事务处理,重点介绍注解方式和XML配置方式。 首先,我们了解事务处理在数据库操作中的重要性。事务是一组操作,这些操作要么全部成功,要么全部失败,确保数据...

    Hibernate 事务和并发控制

    在Hibernate中,事务可以通过编程式或声明式的方式进行管理。编程式事务管理通常通过Session的beginTransaction(), commit()和rollback()方法来实现。声明式事务管理则依赖于Spring等框架,通过@Transactional注解来...

    Hibernate事务(源码)

    在Hibernate中,事务可以通过编程式或声明式两种方式来管理。编程式事务管理通常在代码中显式地开启、提交和回滚事务,而声明式事务管理则依赖于如Spring框架这样的容器,通过AOP(面向切面编程)自动管理事务边界。...

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

    在Spring中,通过`@Transactional`注解可以在方法级别声明事务边界。当该方法执行时,Spring会自动处理事务的开启、提交或回滚,无需开发者手动干预。 5. **配置Spring和Hibernate**:在Spring 3中,我们需要配置...

    spring mvc+hibernate 实现事务管理(全注解版)

    2. **Hibernate事务**: Hibernate本身也提供了一种事务管理机制,但在Spring环境中,我们通常使用Spring的事务管理器来协调。当@Transactional注解应用于方法上,Spring会在该方法执行前后自动管理事务的开始和结束...

    spring hibernate 事务管理学习笔记(二)

    在Spring中,我们可以使用`@Transactional`注解来声明事务。这个注解可以应用在类或方法级别,用于指定事务的传播行为、隔离级别、超时限制以及是否回滚默认异常。例如: ```java @Service @Transactional...

    day36 09-Hibernate中的事务:事务处理

    总结来说,Hibernate的事务处理是其强大功能的重要组成部分,它提供了编程式和声明式两种方式来管理事务,以适应不同开发场景的需求。理解并熟练运用事务处理,对于构建健壮的Java应用至关重要。在实际开发中,...

    spring hibernate 事务管理学习笔记(一)

    本文将深入探讨Spring与Hibernate整合时的事务管理,帮助你更好地理解和运用这些技术。 首先,Spring框架是Java企业级应用的基石,它提供了一种依赖注入(Dependency Injection,DI)的方式,使得组件之间的耦合度...

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

    在业务服务类中,我们可以使用@Transactional注解来声明事务边界。例如: ```java @Service public class UserService { @Autowired private UserRepository userRepository; @Transactional public void ...

Global site tag (gtag.js) - Google Analytics