博客
关于我
spring事务配置
阅读量:796 次
发布时间:2023-03-28

本文共 2488 字,大约阅读时间需要 8 分钟。

Spring事务配置与事务管理

一、声明式事务配置

在Spring中,事务管理通过声明式配置来实现,主要包括以下几个步骤:

  • 配置SessionFactory

    首先需要配置SessionFactory,通常通过Spring的配置文件(如application.xml或beans.xml)来实现。以下是一个典型的配置示例:

    classpath:hibernate.cfg.xml

    通过上述配置,Spring会自动读取hibernate.cfg.xml文件,配置Hibernate的会话工厂。

  • 配置事务管理器

    接下来,需要配置事务管理器(TransactionManager)。在Hibernate中,事务管理器由HibernateTransactionManager类实现,通常与SessionFactory关联:

  • 事务传播特性

    Spring支持多种事务传播特性,可以通过配置来指定。常见的传播特性包括:

    • REQUIRED:若有事务存在,则参与当前事务;若无,则创建新事务。
    • SUPPORTS:若有事务存在,则参与当前事务;若无,则非事务执行。
    • MANDATORY:若有事务存在,则参与当前事务;若无,则抛出异常。
    • REQUIRES_NEW:总是创建新事务,若有事务存在,则挂起当前事务。
    • NOT_SUPPORTED:总是非事务执行,若有事务存在,则挂起当前事务。
    • NEVER:总是非事务执行,若有事务存在,则抛出异常。
    • NESTED:若有事务存在,则嵌套当前事务;若无,则创建新事务。
  • 事务建议配置

    使用 <aop:config><aop:advisor> 来定义事务建议。例如,下面的配置会为所有UserManager类中的方法添加事务建议:

  • 事务属性配置

    使用 <tx:advice> 来定义事务属性。例如,以下配置将事务传播特性设置为REQUIRED,并指定只读属性:

  • 二、编写业务逻辑方法

    在编写业务逻辑方法时,建议遵循以下规范:

  • 继承HibernateDaoSupport类

    使用HibernateDaoSupport类作为基类,可以方便地获取HibernateTemplate:

    public class UserManager extends HibernateDaoSupport {    // 使用HibernateTemplate进行数据库操作    private HibernateTemplate template = new HibernateTemplate();}
  • 使用HibernateTemplate

    HibernateTemplate是一个轻量级的Hibernate Session封装,常用于持久化操作。例如:

    public User saveUser(User user) {    template.save(user);}
  • 异常处理

    在业务逻辑方法中,建议将异常一直向上抛出,以便在表示层(如Struts)进行处理。例如:

    public void addUser(User user) throws Exception {    // 业务逻辑代码    throw new Exception("用户添加失败");}
  • 事务边界设置

    通常将事务边界设置在业务层,避免在DAO层进行事务管理。通过Spring的声明式事务配置,确保事务管理器能够正确传播和管理事务。

  • 三、事务传播特性

    事务传播特性决定了事务在分布式环境中的行为。常见传播特性包括:

  • REQUIRED

    如果存在一个事务,则支持当前事务;如果没有,则创建新事务。

  • SUPPORTS

    如果存在一个事务,支持当前事务;如果没有,则非事务执行。

  • MANDATORY

    如果存在一个事务,支持当前事务;如果没有,则抛出异常。

  • REQUIRES_NEW

    总是创建新事务,若有事务存在,则挂起当前事务。

  • NOT_SUPPORTED

    总是非事务执行,若有事务存在,则挂起当前事务。

  • NEVER

    总是非事务执行,若有事务存在,则抛出异常。

  • NESTED

    如果有一个活动事务,则运行在一个嵌套的事务中;如果没有,则按REQUIRED属性执行。

  • 四、事务隔离级别

    Spring事务的隔离级别决定了事务的并发安全性。常见的隔离级别包括:

  • ISOLATION_DEFAULT

    使用数据库默认的隔离级别,通常为读未提交。

  • ISOLATION_READ_UNCOMMITTED

    允许一个事务读取另一个事务未提交的数据,可能导致脏读、不可重复读和幻像读。

  • ISOLATION_READ_COMMITTED

    确保一个事务修改的数据提交后才能被另一个事务读取。

  • ISOLATION_REPEATABLE_READ

    防止脏读和不可重复读,但可能出现幻像读。

  • ISOLATION_SERIALIZABLE

    实施严格的并发控制,通过锁机制防止并发冲突,但性能较低。

  • 五、Spring对Hibernate的支持

    Spring对Hibernate的支持主要体现在以下几个方面:

  • HibernateDaoSupport

    提供了对HibernateTemplate的支持,方便开发者使用。

  • HibernateTemplate

    提供了一个轻量级的Hibernate Session封装,简化了数据库操作。

  • 事务管理集成

    Spring与Hibernate的事务管理器集成,支持多种事务传播特性和隔离级别。

  • 通过以上配置和编写,可以在Spring框架中实现高效的事务管理和业务逻辑执行,同时确保事务的正确传播和隔离。

    转载地址:http://dshfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现pascalTriangle帕斯卡三角形算法(附完整源码)
    查看>>
    Objective-C实现perfect cube完全立方数算法(附完整源码)
    查看>>
    Objective-C实现PNG图片格式转换BMP图片格式(附完整源码)
    查看>>
    Objective-C实现pollard rho大数分解算法(附完整源码)
    查看>>
    Objective-C实现quick select快速选择算法(附完整源码)
    查看>>
    Objective-C实现recursive bubble sor递归冒泡排序算法(附完整源码)
    查看>>
    Objective-C实现recursive insertion sort递归插入排序算法(附完整源码)
    查看>>
    Objective-C实现RedBlackTree红黑树算法(附完整源码)
    查看>>
    Objective-C实现redis分布式锁(附完整源码)
    查看>>
    Objective-C实现reverse letters反向字母算法(附完整源码)
    查看>>
    Objective-C实现ripple adder涟波加法器算法(附完整源码)
    查看>>
    Objective-C实现RodCutting棒材切割最大利润算法(附完整源码)
    查看>>
    Objective-C实现Romberg算法(附完整源码)
    查看>>
    Objective-C实现RRT路径搜索(附完整源码)
    查看>>
    Objective-C实现rsa 密钥生成器算法(附完整源码)
    查看>>
    Objective-C实现RSA密码算法(附完整源码)
    查看>>
    Objective-C实现runge kutta龙格-库塔法算法(附完整源码)
    查看>>
    Objective-C实现segment tree段树算法(附完整源码)
    查看>>
    Objective-C实现selection sort选择排序算法(附完整源码)
    查看>>
    Objective-C实现sha256算法(附完整源码)
    查看>>