20201126+袁鑫

学习日志

知识总结

JdbcTemplate 概述

它是 spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装。spring 框架为我们提供了很 多的操作模板类。

操作关系型数据的: JdbcTemplate HibernateTemplate

操作 nosql 数据库的: RedisTemplate

操作消息队列的: JmsTemplate

Spring 中事务控制的 API 介绍
PlatformTransactionManager

此接口是 spring 的事务管理器,PlatformTransactionManager接口提供事务操作的办法,包含有3个具体的操作

​ 获取事务状态信息TransactionStatus getTransaction(TransactionDefinition definition)

​ 提交事务 void commit(TransactionStatus status)

​ 回滚事务void rollback(TransactionStatus status)

真正管理事务的对象

org.springframework.jdbc.datasource.DataSourceTransactionManager :使用 SpringJDBC 或 iBatis(Mybatis) 进行持久化数据时使用

org.springframework.orm.hibernate5.HibernateTransactionManager :使用 Hibernate 进行持久化数据时使用(需要导入spring-orm包)

TransactionDefinition

获取事务对象名称:String getName()

获取事务隔离级 :int getlsolationLevel()

获取事务传播行为:int getPropagationBehavior()

获取事务超时时间:int getTimeout()

获取事务是否只读:boolean isReadOnly()

事务的隔离级别

事务隔离级反映事务提交并发访问时的处理态度

ISOLATION_DEFAULT

​ 默认级别,归属下列某一种

ISOLATION_READ_UNCOMMITTED

​ 可以读取未提交数据

ISOLATION_READ_COMMITTED

​ 只能读取已提交数据,解决藏独问题(Oracle默认级别)

ISOLATION_REPEATABLE_READ

​ 是否读取其他事务提交修改后的数据,解决不可重复读问题(MySQL默认级别)

ISOLATION_SERIALIZABLE

​ 是否读取其他事务提交添加后的数据,解决幻影读问题

事务的传播行为

REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。一 般的选择(默认值)

SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行(没有事务)

MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常

REQUERS_NEW: 新建事务,如果当前在事务中,把当前事务挂起。

NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起

NEVER:以非事务方式运行,如果当前存在事务,抛出异常

NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行REQUIRED 类似的操 作。

超时时间

默认值是-1,没有超时限制。如果有,以秒为单位进行设置。

是否是只读事务

建议查询时设置为只读。

TransactionStatus

此接口提供的是事务具体的运行状态,TransactionStatus接口描述了某个时间点上事务对象的状态信息,包含有6个具体的操作

刷新事务:void flush()

获取是否存在存储点:boolean hasSavePoint()

获取事务是否完成:boolean isCompleted()

获取事务是否为新的事务:boolean isNewTransaction()

获取事务是否回滚:boolean isRollbackOnly()

设置事务回滚:void setRollbackOnly()

心得

学了这么多东西给我的感觉就是,理解起来都不是难,但是如果要记住的话还是有一些恼火的,所以熟练都是从练开始吧。

标签

评论

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1