`

Spring事务配置、隔离设置的经验总结

阅读更多

关于Spring的事务配置,绝对是一个老话题了;关注最多的也就是Transactional里的Propagation,Isolation;相关论述各种论坛都重复重复再重复,不累赘了,不过推荐大家可以查看spring源码:

org.springframework.transaction.annotation.Transactional;源码内对这两个属性的枚举进行了说明(当然是英文的);值得注意的是,一个完善、可靠、健壮的系统,事实上对timeout,rollbackFor,noRollbackFor属性也是根据实际场景各有不同的;实际开发中,过多的人根本不关注只会使用默认值了,甚至对于Propagation和Isolation也是;当然确实大部分业务可能不用关心这些,全默认既ok;

      <tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="create*">
<tx:method name="save*">
<tx:method name="delete*">
<tx:method name="*" read-only="true">
<tx:method name="*" rollback-for="Exception">
</tx:attributes>
</tx:advice>

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory">
</bean>

<aop:config>
<aop:advisor pointcut="execution(* *..service.*Manager.*(..))" advice-ref="txAdvice">
</aop:config>
如上配置是一般应用对全局的AOP事务配置;实际经验告诉我们实战中通常都是AOP事务配合注解事务的;

很容易理解的就像是request与session的关系一样,注解会优先于AOP事务配置;完美的解决项目中的点面问题(整个面的AOP配置,局部点用注解)

@Transactional(propagation=Propagation.MANDATORY,readOnly=true,timeout=600000)

值得注意的是timeout的默认值是-1,既没有超时,在高并发高TPS的业务请求中你会发现根据实际情况设置下timeout会让你的系统更可靠,不至于高压力至崩溃等情况,特别是这个请求可能较耗时时;根据对请求的估时(调用外部接口时间估时)设置timeout,有效降低系统压力风险,用户体验也不会太差;

 

分享到:
评论

相关推荐

    02-01-10-Spring事务传播原理及数据库事务操作原理1

    在本课程中,我们将深入探讨...总结来说,本课程旨在帮助开发者深入理解Spring事务的配置和操作,以及数据库事务的基本原理。通过学习,你可以熟练地在Spring应用中使用事务管理,提高代码的稳定性和数据的一致性。

    传智播客 Spring 完全文档 笔记总结

    - **隔离级别**:事务的隔离级别决定了事务之间如何隔离,Spring 支持四种不同的隔离级别。 - **传播行为**:定义了当一个事务方法被另一个事务方法调用时,事务应该如何传播。 - **回滚规则**:指定在哪些情况下...

    Spring 中文教程

    六、Spring事务管理 1. 事务边界:Spring提供了编程式和声明式事务管理。声明式事务管理基于AOP,可以在方法级别或类级别定义事务边界。 2. 事务隔离级别和回滚规则:理解这些概念对于保证数据一致性至关重要。 七...

    webwork in spring

    总结,WebWork与Spring的结合使得开发者能够利用WebWork的强大Action模型和Spring的全面企业级功能,构建出高效、可维护的Web应用程序。通过深入学习和实践,你将能够掌握这种集成技术,提高自己的开发技能。

    spring-remote-service-example:一个示例项目,用于展示如何使用 JSON 反序列化通过 HTTP 在隔离的 Spring 容器之间进行(远程)服务调用

    总结来说,“spring-remote-service-example”是一个宝贵的学习资源,它揭示了Spring在分布式系统中如何实现高效、安全的远程服务调用,对于提升Java开发者在微服务架构下的技能和理解大有裨益。通过该项目的实践,...

    阿里云面试经验,详细记录所有面试题,分享个人面试心得

    阿里云面试经验总结 本资源摘要信息为阿里云面试经验分享,涵盖了Java多线程、JVM相关、Java扩展篇、Spring相关、中间件篇、数据库篇、Redis和其他相关知识点。该资源将为读者提供详细的IT知识点总结,旨在帮助读者...

    互联网高频Java后端面试题20道(适合1~3年)V1.0.35.docx

    答案:设计模式是软件工程中经过验证的、在特定场景下解决问题的经验总结。它们为常见问题提供了标准化的解决方案。在 Java 开发中,常用的设计模式包括工厂模式(Factory Pattern)、单例模式(Singleton Pattern)...

    面经-阿里终面1

    3. 事务嵌套和数据库隔离级别:在面试中,面试官问到事务嵌套的问题,并且关联到数据库隔离级别,这表明候选人需要具备一定的数据库知识和事务处理经验。 4. 项目合作和团队协作:在面试中,面试官问到项目合作方面...

    Hibernate开发各类项目的技术总结

    7. **事务管理**:正确配置事务隔离级别和超时设置,防止死锁和脏读。 8. **日志配置**:调整日志级别,避免不必要的日志输出,影响系统性能。 在开发过程中,我们还应关注错误处理和调试技巧,如使用Hibernate的...

    Java三大框架(ssh)总结.pdf

    Spring提供了事务管理、DAO层支持等功能,还有Spring MVC用于构建Web应用,以及Spring Boot简化项目初始化和配置。 **设计模式**是软件开发中的一种最佳实践,是解决特定问题的模板。面向对象设计原则如单一职责...

    itcast0906Projec

    "itcast0906Projec" 是一个与...综上所述,"itcast0906Projec"项目涵盖了数据库设计、SQL编程、工作流管理(JBPM)、数据库事务处理和Spring框架的数据源配置等多个关键领域,是IT专业人士提升技能和实践经验的好教材。

    尚硅谷S4S2H4整合案例视频教程

    - **Spring与Hibernate整合**:配置Spring来管理Hibernate SessionFactory,以及通过Spring事务管理器实现事务控制。 #### 2. 控制层设计 - 使用Struts2作为前端控制器,负责接收用户的请求并转发给相应的业务层...

    Java习题.rar

    2. **设计模式**:设计模式是解决软件开发中常见问题的经验总结。面试中常见的设计模式有单例模式、工厂模式(简单工厂、工厂方法、抽象工厂)、装饰器模式、代理模式、建造者模式、适配器模式、观察者模式、策略...

    java大公司面试技术要点总结

    2. MyBatis:熟悉SQL映射文件、动态SQL、事务管理,以及与Spring的整合。 3. MVC框架:了解Struts、Spring MVC的工作原理,以及它们与前端视图层的交互。 五、数据库操作 1. SQL:熟练掌握SQL语言,包括DML(增删改...

    东南融通面试题 内部

    总结起来,这些面试题目覆盖了Java基础知识、Struts框架、Hibernate框架以及Spring框架等方面的内容,旨在评估应聘者的理论基础和技术实践经验。通过深入理解这些知识点,可以帮助开发者更好地应对实际项目中的挑战...

    互联网高频Java后端面试题20道(适合1~3年)V1.0.41.docx

    答案:设计模式是在软件设计中经常遇到的典型问题的解决方案,是经验的总结。常见的设计模式包括工厂模式(用于创建对象)、单例模式(确保类只有一个实例)、装饰器模式(动态地给对象添加职责)、观察者模式(定义...

    java测试题五套

    - **Spring**:Spring框架是Java企业级应用的核心,提供了依赖注入(DI)和面向切面编程(AOP),还包含数据库事务管理、数据访问、任务调度等功能。 - **Hibernate**:Hibernate是一个对象关系映射(ORM)框架,...

Global site tag (gtag.js) - Google Analytics