首先需要了解的是spring boot 对事物的分类

1: JDBC 事物

引入依赖包

spring-boot-starter-jdbc

jdbc事物是传统方式,直接连接数据库进行操作。

需要增加配置

spring.datasource.url=jdbc:mysql://localhost/test

spring.datasource.username=dbuser

spring.datasource.password=dbpass

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring会根据这些配置完成数据源初始化等工作

自动生成JdbcTemplate 操作类,使用时可以做直接注入

或者是使用jndi:

spring.datasource.jndi-name = java:jboss / datasources / customers

访问数据库使用:

NamedParameterJdbcTemplate

2: JPA事物

Java Persistence API是一种标准技术,可让您将对象“映射”到关系数据库。

使用jpa事物则需要引入依赖:spring-boot-starter-data-jpa。它提供以下关键依赖项:

Hibernate:最受欢迎的JPA实现之一。

Spring Data JPA:使实现基于JPA的存储库变得容易。

Spring ORMs:Spring Framework的核心ORM支持。

关键词:实体类

传统上,JPA“实体”类在persistence.xml文件中指定。使用Spring Boot,此文件不是必需的,而是使用“实体扫描”。默认情况下,将搜索主配置类(注释为@EnableAutoConfiguration或者@SpringBootApplication)下的所有包 。

任何类别标注了@Entity,@Embeddable或者@MappedSuperclass被认为是。典型的实体类类似于以下示例:

@Entity

public class City implements Serializable {

@Id

@GeneratedValue

private Long id;

@Column(nullable = false)

private String name;

@Column(nullable = false)

private String state;

protected City() {

// no-args constructor required by JPA spec

// this one is protected since it shouldn't be used directly

}

public City(String name, String state) {

this.name = name;

this.state = state;

}

public String getName() {

return this.name;

}

public String getState() {

return this.state;

}

}

JPA Repositories

Spring Data JPA Repositories是定义访问数据的接口。例如, CityRepository接口可能会声明一种findAllByState(String state)方法来查找给定状态中的所有城市。对于更复杂的查询,您可以使用Spring Data的Query注释来注释您的方法 。Spring Data存储库通常从Repository或 CrudRepository 接口扩展 。如果使用自动配置,则会从包含主配置类(带有@EnableAutoConfiguration或标注的@SpringBootApplication)的包中搜索存储库 。

以下示例显示了典型的Spring Data存储库接口定义:

package com.example.myapp.domain;

import org.springframework.data.domain.*;

import org.springframework.data.repository.*;

public interface CityRepository extends Repository<City, Long> {

Page<City> findAll(Pageable pageable);

City findByNameAndStateAllIgnoringCase(String name, String state);

}

Spring Data JPA Repositories支持三种不同的引导模式:default,deferred和lazy。要启用延迟或延迟引导,请分别设置 spring.data.jpa.repositories.bootstrap-mode为deferred或lazy。

jta事物

JTA是分布式事务,指在应用程序中存在多个数据源,保持多个数据源一致性的操作事物! 目前spring boot本身没有实现jta事物管理器的,目前都是使用的第三方事物管理器!

Spring Boot通过使用Atomikos或Bitronix 嵌入式事务管理器支持跨多个XA资源的分布式JTA事务。部署到合适的Java EE Application Server时,也支持JTA事务(这个指的是容器事物,如果不明白的话,可以看下其他博客)。

检测到JTA环境时,Spring JtaTransactionManager用于管理事务。自动配置的JMS,DataSource和JPA bean已升级为支持XA事务。您可以使用标准的Spring惯用语,例如@Transactional,参与分布式事务。如果您在JTA环境中并仍希望使用本地事务,则可以将该spring.jta.enabled属性设置false为禁用JTA自动配置。

spring jta 同时还支持部分jms服务器的事物!

具体实现不在这里说明了,感兴趣的可以看下其他博客!

总结

目前对于小型应用来说spring boot 提供的这三种事物本身已经满足需要了,如果需要构建分布式微服务应用,存在多个应用之间的服务调用及事物的统一管理,则spring boot提供的三种事物则就不能满足了,这时候需要借助于第三方事物管理来实现!感兴趣的可以看博主分布式架构中事物篇文章

spring boot 三种类型事物实现说明相关推荐

  1. spring框架三种类型项目实现--基础maven类型、纯注解开发型、aop结合注解开发型

    spring框架实现 1.基础maven类型 1.开发准备--pom.xml添加spring依赖 2.创建properties文件 还是三层架构开发 3.domain层创建实体类javabean 4. ...

  2. spring boot 三种入参

    先来讲述下最简单的使用get请求用户信息的实现方式,代码如下,写好后直接在Application类点击右键有个RunAs,点击后会自动运行,运行成功后可以使用http发包工具进行测试,这里推荐使用ch ...

  3. Spring 异常处理三种方式

    Spring 异常处理三种方式 异常处理方式一. @ExceptionHandler 异常处理方式二. 实现HandlerExceptionResolver接口 异常处理方式三. @Controlle ...

  4. Spring的三种注入方式(为什么推荐构造器注入?)

    Spring的三种注入方式 一.属性注入 @Resource和@Autowired的区别 为什么尽量使用 @Resource? 二.setter 注入 三.构造器注入 具体可以看看Spring官网 为 ...

  5. linux支持三种类型的硬件,linux

    纪晓岚曾经说:"世间的道理与事情,都在古人的书中说尽,现在如再著述,仍然超不过古人的范围,又何必再多著述."于是他一生之中,从不著书,只是编书--整理前人的典籍,将中国文化作系统的 ...

  6. Asp.net支持三种类型的cache[转]

    from:http://www.cnblogs.com/thomasnet/archive/2006/11/26/573104.html Asp.net支持三种类型的cache 想写一个技术快速概述, ...

  7. java中三种转string的方法_java中int,char,string三种类型的相互转换

    如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将 ...

  8. html5中标签分为,HTML标签的三种类型

    HTML标签的类型分为三种:行内元素,行内块元素,块级元素 而标签的属性是可以转换的 display:inline: 转换为行内元素 display:linline-block 转换为行内块元素 di ...

  9. java中有scoreframe类型嘛_java构造函数的三种类型总结

    我们说构造函数能处理参数的问题,但其实也要分三种情况进行讨论.目前有三种类型:无参.有参和默认.根据不同的参数情况,需要我们分别进行构造函数的讨论.这里重点是无参构造函数的初始化也要分两种方法进行分析 ...

最新文章

  1. wcf系列学习5天速成——第四天 wcf之分布式架构(转载)
  2. 3纳米、2纳米、1纳米芯片该如何造?
  3. 澄清大数据存储——系统集成商篇
  4. Gartner:到2020年人工智能将创造出230万个工作岗位
  5. 帆软报表(finereport)点击事件对话框打开
  6. Numpy 笔记: 多维数组的切片(slicing)和索引(indexing)【转】
  7. 一加Nord 2配置细节曝光:天玑1200芯片+5000万像素旗舰主摄
  8. 左右db_block_size了解和实验
  9. python中的is和==
  10. Hbuilder中如何快速输入注释标签_三菱PLC编程软件如何使用注释、声明、注解?...
  11. Unity美术字体教程--BMFont美术字体的制作流程以及在unity中美术字体的生成
  12. gradle下载很慢
  13. ImportError: DLL load failed while importing ie_api
  14. Java--IDEA报错Project ‘org.springframework.boot:spring-boot-starter-parent:2.2.0.RELEAS
  15. 基于word2vec使用wiki中文语料库实现词向量训练模型--2019最新
  16. 微信小程序前四周内容总结
  17. 使用python完成知乎模拟登陆
  18. Java接口实现打印机
  19. 使用fiddle进行苹果手机app抓包教程
  20. 3D图形学一:模仿草的运动 – GPU(Pixel Shader Vertex Shader)实现

热门文章

  1. 微信也能设置主题了,盘他!
  2. 电脑连接公司中国电信爱wifi反复验证无法连接wifi
  3. 如何使WooCommerce产品属性更加突出
  4. 手游-放开那三国socket协议分析
  5. 计算机概论易错题总结:概念类
  6. Android获取手机序列号
  7. Python之爬虫-- js加密(破解有道词典加密的算法)
  8. 睡眠质量不好怎么改善,这些助眠好物让你失眠快速入睡
  9. 有没有什么帮助睡眠的东西?助眠效果好的东西分享
  10. 小程序之仿小米商城Lite