勿谓今日不学而有来日,勿谓今年不学而有来年。
日月逝矣,岁不我延。

Spring的JDBC模板及事务管理

JdbcTemplate主要方法

  • execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
  • update方法:update方法用于执行新增、修改、删除等语句;
  • batchUpdate方法用于执行批处理相关语句;
  • query方法及queryForXXX方法:用于执行查询相关语句;
  • call方法:用于执行存储过程、函数相关语句。

JDBC模板的配置

JDBC模板的具体使用参见:https://github.com/llanc/SSH_Learn/tree/master/Spring-05-JDBC的Dmeo1和Demo2

Spring的事务管理

Spring的事务管理的API

PlatformTransactionManager:平台事务管理器

平台事务管理器:接口,是Spring用于管理事务的真正的对象。

  • DataSourceTransactionManager :底层使用JDBC管理事务
  • HibernateTransactionManager :底层使用Hibernate管理事务

TransactionDefinition   :事务定义信息

  • 事务定义:用于定义事务的相关的信息,隔离级别、超时信息、传播行为、是否只读

TransactionStatus:事务的状态

  • 事务状态:用于记录在事务管理过程中,事务的状态的对象。

 

Spring进行事务管理的时候,首先平台事务管理器根据事务定义信息进行事务的管理,在事务管理过程中,产生各种状态,将这些状态的信息记录到事务状态的对象中。

Spring中事务的传播行为

Spring中提供了七种事务的传播行为:

  • 保证多个操作在同一个事务中
    • PROPAGATION_REQUIRED 默认值,如果A中有事务,使用A中的事务,如果A没有,创建一个新的事务,将操作包含进来
    • PROPAGATION_SUPPORTS 支持事务,如果A中有事务,使用A中的事务。如果A没有事务,不使用事务。
    • PROPAGATION_MANDATORY 如果A中有事务,使用A中的事务。如果A没有事务,抛出异常。
  • 保证多个操作不在同一个事务中
    • PROPAGATION_REQUIRES_NEW 如果A中有事务,将A的事务挂起(暂停),创建新事务,只包含自身操作。如果A中没有事务,创建一个新事务,包含自身操作。
    • PROPAGATION_NOT_SUPPORTED 如果A中有事务,将A的事务挂起。不使用事务管理。
    • PROPAGATION_NEVER    如果A中有事务,报异常。
  • 嵌套式事务
    • PROPAGATION_NESTED 嵌套事务,如果A中有事务,按照A的事务执行,执行完成后,设置一个保存点,执行B中的操作,如果没有异常,执行通过,如果有异常,可以选择回滚到最初始位置,也可以回滚到保存点。

Spring的事务管理

1、编程式事务管理

2、声明式事务管理

  • XML方式的声明式事务管理
  • 注解方式的声明式事务管理

三种事务管理方式见:https://github.com/llanc/SSH_Learn/tree/master/Spring-05-JDBC的Demo3.Demo4.Demo5

赞(2)
未经允许不得转载:喋喋不休 » Spring的JDBC模板及事务管理

评论 抢沙发

评论前必须登录!

 

精品网站

有券无忧电脑壁纸精选