Java高级05:Spring事务管理及应用

1.事务主要是用来做什么的?

主要是对数据库进行事务管理,spring的事务主要是用来管理spring所加载的ORM框架(例如:Hibernate、Mybatis、MybatisPlus······)起到对程序里面数据进行持久化,提高运行速度。

2.spring事务管理的步骤:

第一步:注解@Transactional(对事物的一些描述参数也叫属性,例如事务响应的时间和优先级)标识,spring自动扫描此类注解、标识。(springcloud里已屏蔽此技术)

第二步:spring一旦启动的时候会去解析生成bean,这个过程会检测拥有相关注解的类和方法,同时给带有此事务的类或者方法生成相应的代理。

3.关于@Transactional的注解属性都有哪些?

value:可选的限定描述符,制定使用的事务管理器(默认的的事务管理器)

propagtion:可选的事务传播行为设置(经常使用)

isolation:可选的事务隔离级别设置(经常使用)

readOnly:读写或只读事务

timeout:事务超时时间设置;单位ms(毫秒)

rollbackFor:导致事务回滚的异常类名字数组

oRollbackFor:不会导致事务回滚的

noRollbackForClassName:不会导致事务回滚的异常类的名字数组

4.propagtion注解详解,各属性值的含义

可选的事务传播行为设置(经常使用)

首先在ServiceImpl里开启事务

@Transactional(propagation = )

各属性值的含义:

REQUIRED:如果有事务,那么加入事务;如果没有事务,创建一个事务;

NOT_SUPPORTED:这个方法不开启事务

REQUIREDDS_NEW:不管有没有事务的存在都创建一个新的事务来执行,原来事务挂起

MANDATORY:必须在一个已有事务中执行

NEVER:不能在一个事务中执行,就是当前必须没有事务的情况下,否则跑出异常

SUPPORTS:如果当前存在事务,则在事务中运行;否则以非事务形态运行

NESTED:若当前存在事务,则再运行一个嵌套的事务;若当前没有事务,则按照REQUIRED的方式运行;如:

5.isolation注解详解,各属性值的含义

可选的事务隔离级别设置(经常使用)

TransactionDefinition.ISOLATION_DEFAULT:这是默认值,表示使用底层数据库的默认隔离级别

TransactionDefinition.ISOLATION_READ_UNCOMMITTED:该隔离级别表示一个事务可以读取另一个事务修改但是没有提交的数据,该级别不能防止脏读数据,不可重复读和幻读,因此很少使用该隔离级别

TransactionDefinition.ISOLATION_READ_COMMITTED:该隔离级别表示一个事务只能读取另一个事务已经提交的数据,该级别可以防止脏读数据,这也是大多数情况下的推荐隔离级别

TransactionDefinition.ISOLATION_REPEATABLE_READ:该事务隔离级别表示一个事务在整个过程中可以重复执行某个查询,并且每次返回的记录都相同,该级别可以防止脏读数据和不可重复读;

TransactionDefinition.ISOLATION_SERIALLABLE:所有的事务依次逐个执行,这样事务之间就完全不可能进行干扰,也就是说,该级别可以防止脏读、不可重复读及幻读,但是这将影响到程序的运行性能,通常情况下也会用到该级别

6.名词解释-脏读(超前)

当事务读取还未提交的事务时,就会发生脏读

例如:A修改了一条数据未提交,B读取了A修改但没提交的数据叫事务脏读,A修改的又改了叫事务回滚。

7.名词解释-幻读(落后)

就是读取到了历史数据,即使此数据已经被修改了,那么也会读到修改前的数据

8.事务模板

<tx:advice id="txAdvice" transaction-manager="txManager">
        <tx:attributes>
            <tx:method name="find*" propagation="NOT_SUPPORTED"
                read-only="true" />
            <tx:method name="select*" propagation="NOT_SUPPORTED"
                read-only="true" />
            <tx:method name="*" propagation="REQUIRED" />
        </tx:attributes>
    </tx:advice>

所以写了这个,之后写数据库方法时就得用find或者select开头来命名 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Web高级编程是指在Java平台下进行高级Web开发的技术和方法。其中涵盖了Websockets、Spring Framework和JPA技术。 Websockets是一种在客户端和服务器之间实现双向通信的技术。相对于传统的HTTP请求-响应模式,Websockets能够实现实时的双向通信,使得服务器能够主动向客户端推送消息,而不需要客户端发起请求。它能够提供更好的实时性和性能,适用于实时聊天、在线游戏、协同编辑等场景。 Spring Framework是一个开源的Java应用程序框架,广泛用于企业级Java应用的开发。它提供了一套完整的解决方案,包括IoC容器、AOP、数据访问、Web开发、消息队列、事务管理等模块。在Java Web高级编程中,Spring Framework可以用来实现MVC架构,处理请求和响应,管理业务逻辑和数据访问层的交互。 JPA(Java Persistence API)是Java EE的一部分,用于将Java对象持久化到关系型数据库中。它提供了一些注解和API,使得开发者可以通过对象操作来进行数据库的访问和操作,而不需要直接编写SQL语句。JPA简化了数据库操作的过程,提高了开发效率,并且保持了与数据库的解耦。在Java Web高级编程中,JPA可以与Spring Framework集成,实现ORM(Object-Relational Mapping)的功能,简化数据访问层的开发。 总的来说,Java Web高级编程涵盖了Websockets、Spring Framework和JPA技术,通过使用这些技术,开发者可以实现高效的Web应用程序,提供实时的双向通信,简化开发过程,并且保持与数据库的解耦。这些技术在现代的Web开发中得到广泛应用,可以满足各种复杂的业务需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值