澳门新葡亰娱乐网站-www.142net-欢迎您

澳门新葡亰娱乐网站是因为你还没有找到一条正确的致富之路,www.142net是将所有的游戏都汇集在一起的官方平台,因为澳门新葡亰娱乐网站这个网站当中有着大量的游戏攻略,托IP定位技术,传达终端直接到达的精准传播方式。

【澳门新葡亰网址下载】Spring中事务管理的两种

来源:http://www.bhtsgq.com 作者:计算机知识 人气:71 发布时间:2019-05-30
摘要:spring协助理编辑程式事务管理和注解式事务管理三种方式。 【澳门新葡亰网址下载】Spring中事务管理的两种方式,Spring事务管理方式。编制程序式事务管理 注明式事务管理 选择注脚达

spring协助理编辑程式事务管理和注解式事务管理三种方式。

【澳门新葡亰网址下载】Spring中事务管理的两种方式,Spring事务管理方式。编制程序式事务管理
注明式事务管理

选择注脚达成Spring的表明式事务管理,越发简明!

一个专门的工作的功成名就: 调用的service是施行成功的,意味着service中调用的有所的dao是试行成功的。  事务应该在Service层统壹支配。

编制程序式事务管理使用TransactionTemplate也许直接利用底层的PlatformTransactionManager。对于编制程序式事务管理,spring推荐应用TransactionTemplate。

步骤:

万一手动去贯彻,则需求对dao进行代理,在章程前后实行工作操作和足够管理,要求AOP和代办,可是spring已经济合营并该意义能够直接证明使用。

表明式事务管理创设在AOP之上的。其本质是对艺术前后开始展览阻拦,然后在对象措施开首以前创设或许投入叁个业务,在推行完指标措施之后依照推行意况提交大概回滚事务。证明式事务最大的长处正是不须要经过编制程序的办法管总管业,那样就没有须求在业务逻辑代码中掺杂事务管理的代码,只需在陈设文件中做相关的事情规则注明(或透过依照@Transactional注明的艺术),便能够将工作规则应用到业务逻辑中。

         一) 必须引进Aop相关的jar文件

澳门新葡亰网址下载,政工调整概述

编制程序式事务调控

         本人手动调控作业,就称为编制程序式事务调控。

         Jdbc代码:

                   Conn.setAutoCommite(false);  // 设置手动调节职业

         Hibernate代码:

                   Session.beginTransaction();    // 开启3个业务

         【细粒度的事情调整: 能够对点名的章程、钦定的措施的某几行加多事务调节】

         (相比灵敏,但付出起来比较繁琐: 每一次都要敞开、提交、回滚.)

 

申明式事务调控

         Spring提供了对业务的管制, 这些就叫证明式事务管理。

         Spring提供了对业务调节的落到实处。用户如果想用Spring的评释式事务管理,只须要在布局文件中布置就可以; 不想行使时平素移除配置。那几个完毕了对专门的学业调节的最大程度的解耦。

         Spring申明式事务管理,大旨达成正是依据Aop。

         【粗粒度的作业调节: 只能给整个艺术运用专门的学问,不能对章程的某几行使用工作。】

         (因为aop拦截的是方法。)

 

         Spring评释式事务管理器类:

                   Jdbc技术:DataSourceTransactionManager

                   Hibernate技术:HibernateTransactionManager

 

案例<?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:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    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.xsd
          http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context.xsd
         http://www.springframework.org/schema/aop
         http://www.springframework.org/schema/aop/spring-aop.xsd
         http://www.springframework.org/schema/tx
          http://www.springframework.org/schema/tx/spring-tx.xsd">


    <!-- 1. 数据源对象: C3P0连接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUrl" value="jdbc:mysql:///hib_demo"></property>
        <property name="user" value="root"></property>
        <property name="password" value="root"></property>
        <property name="initialPoolSize" value="3"></property>
        <property name="maxPoolSize" value="10"></property>
        <property name="maxStatements" value="100"></property>
        <property name="acquireIncrement" value="2"></property>
    </bean>

    <!-- 2. JdbcTemplate工具类实例 -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 3. dao实例 -->
    <bean id="deptDao" class="cn.itcast.a_tx.DeptDao">
        <property name="jdbcTemplate" ref="jdbcTemplate"></property>

    </bean>

    <!-- 4. service实例 -->
    <bean id="deptService" class="cn.itcast.a_tx.DeptService">
        <property name="deptDao" ref="deptDao"></property>
    </bean>

    <!-- #############5. Spring声明式事务管理配置############### -->
    <!-- 5.1 配置事务管理器类 -->
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>

   </bean>


    <!-- 5.2 配置事务增强(如何管理事务?) -->
    <tx:advice id="txAdvice" transaction-manager="txManager">
        <tx:attributes>
            <tx:method name="get*" read-only="true"/>
            <tx:method name="find*" read-only="true"/>
            <tx:method name="*" read-only="false"/>
        </tx:attributes>
    </tx:advice>

    <!-- 5.3 Aop配置: 拦截哪些方法(切入点表表达式)   应用上面的事务增强配置 -->
    <aop:config>
        <aop:pointcut expression="execution(* cn.itcast.a_tx.DeptService.*())" id="pt"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/>
    </aop:config>

</beans>  

猛烈表明式事务管理要优化编制程序式事务管理,那多亏spring倡导的非侵入式的开采方式。注脚式事务管理使业务代码不受污染,3个常备的POJO对象,只要增添表明就能够收获完全的事务辅助。和编程式事务比较,注解式事务唯1不足地方是,后者的最细粒度只好效率到格局品级,无法实现像编制程序式事务那样能够成效到代码块品级。不过纵然有诸如此类的供给,也设有十分多转换的办法,举个例子,能够将须求举行事务管理的代码块独立为艺术等等。

ca88登录入口 ,         二) bean.xml中钦点申明格局贯彻注解式事务管理以及使用的事务处理器类

         ③)在急需加上事务调控的地点,写上: @Transactional

本文由澳门新葡亰发布于计算机知识,转载请注明出处:【澳门新葡亰网址下载】Spring中事务管理的两种

关键词: 澳门新葡 Spring学习笔记 18-面试题

上一篇:java自学 day1

下一篇:没有了

最火资讯