springboot深入学习(五)-----spring data、事务
spring data项目是spring解决数据访问问题的一系列解决方案,包含了大量关系型数据库以及非关系型数据库的访问解决方案。
一、spring data jpa
1、简介
jpa是一套规范,不提供实现,由不同的软件提供商自行实现各自的功能。这样做的好处就是使用者只需要按照规范中定义的操作方式来使用,不需要具体软件厂商的实现方式。
在soring data jpa中,建立访问层非常简单,如下:

不过这种方式只能操作于单表以及一些最基本的crud。
在使用spring data jpa之前,项目中必须配置了数据源datasource或者连接池之类的(druid连接池)。
2、使用方法
spring data jpa默认提供了findAll、save等方法,并且可以使用findByName的类似方式来操作数据库,不过总的来说,我个人觉得spring data jpa提供的这套方案有点鸡肋。首先写方法的时候会增加难度,其次企业级应用的业务逻辑也很复杂。
a、findByName等等方式
根据字段name到数据库中查询,这块可以自行百度
b、@Query
这种方式有点类似于mybatis提供的方案,sql由开发自己完成

这种是使用参数索引的方式来查询,也可以基于参数名称查询,如下:

也可以搭配其他注解用于更新,如下:

注意,此@Transactional是org.springframework.transaction.annotation.Transactional,而不是javax.transaction.
二、事务
1、简介
所有数据访问技术都有事务处理机制,一般都是提供api来打开事务、提交事务以及回滚事务等操作。spring的事务机制是用统一的机制来处理不同数据访问技术的事务处理,提供了一个PlatformTransactionManager的接口。不同数据访问技术
则对应不同的实现类,如下:
JDBC------------------------------->DataSourceTrasactionManager
JPA---------------------------------->JpaTransactionManager
Hibernate-------------------------->HibernateTransactionManager
JDO--------------------------------->JdoTransactionManager
分布式事务------------------------>JtaTransactionManager
2、声明式事务
声明式事务,就是使用注解来表明该方法上是需要事务支持的。在spring中提供了@EnableTransactionManagement来开启事务,我们之前都是使用xml配置事务,等同于xml配置方式的 <tx:annotation-driven />。
3、注解事务行为
参考文章:https://blog.csdn.net/mawming/article/details/52277431
@Transaction不仅可以用于方法上,也可以使用在类上,使用在类上说明此类中的所有public方法都将开启事务,并且方法上的事务注解优先级高于类事务注解。
4、spring data jpa事务支持
spring data jpa对所有的默认方法都开启了事务支持,且查询类事务默认为readonly=true。
5、springboot的事务支持
在使用jdbc时,springboot默认提供了DataSourceTransactionManager,若选用的是spring data jpa时,默认提供JpaTransactionManager。并且springboot已经默认开启注解事务。
三、非关系型数据库nosql
nosql是对于不使用关系作为数据管理的数据库系统的统称,nosql特点:不使用sql语言作为查询语言、数据存储也不是固定的表与字段。目前主要有以下几类:
---------文档存储型(MongoDB)
|
nosql------------>---------图形关系存储型(Neo4j)
|
---------键值对存储(Redis)
1、MongoDB
springboot中集成mongodb参考博客:https://blog.csdn.net/stronglyh/article/details/81024588
2、Redis
springboot中集成redis参考博客:https://www.cnblogs.com/gdpuzxs/p/7222309.html
springboot深入学习(五)-----spring data、事务的更多相关文章
- spring深入学习(五)-----spring dao、事务管理
访问数据库基本是所有java web项目必备的,不论是oracle.mysql,或者是nosql,肯定需要和数据库打交道.一开始学java的时候,肯定是以jdbc为基础,如下: private sta ...
- spring boot(五)Spring data jpa介绍
在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 使用spr ...
- 【spring源码学习】spring的事务管理的源码解析
[一]spring事务管理(1)spring的事务管理,是基于aop动态代理实现的.对目标对象生成代理对象,加入事务管理的核心拦截器==>org.springframework.transact ...
- spring data事务
事务在spring data中的使用 1:事务一般在service层.因为一个service方法可能会多次调用不同的dao,为了保证事务的完整性,那么多次的dao都放到一个方法里面 2:读的时候可以不 ...
- SpringBoot 自动配置:Spring Data JPA
前言 不知道从啥时候开始项目上就一直用MyBatis,其实我个人更新JPA些,因为JPA看起来OO的思想更强烈些,所以这才最近把JPA拿出来再看一看,使用起来也很简单,除了定义Entity实体外,声明 ...
- 【spring源码学习】spring的事务管理源码学习
一.抽象概念 1.事务管理器 接口:org.springframework.transaction.PlatformTransactionManager 实现类:org.springframework ...
- SpringBoot入门 (五) 数据库访问之spring data jpa
本文记录学习使用spring data jpa访问数据库 一 什么是Spring Data JPA JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java ...
- Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别
转: http://blog.csdn.net/it_man/article/details/5074371 Spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之 ...
- Spring Data JPA 初体验
一,JPA相关的概念 JPA概述 全称是:JavaPersistence API.是SUN公司推出的一套基于ORM的规范. Hibernate框架中提供了JPA的实现. JPA通过JDK 5.0注解或 ...
随机推荐
- http://www.bugku.com:Bugku——变量1(http://120.24.86.145:8004/index1.php)
之前立志做出需要编码解决和时间相关的那道CTF题目,但是这次没找到,相关人士找到了麻烦告诉我一声.本次再学习一下子关于正则表达式和PHP的相关知识.开课咯-.- 刚看题目就发现提示, ...
- [Java学习]反射机制(待续226)
反射机制相关的类.反射机制的作用 获取Class类型对象的三种方式
- crm作业知识点集合[一]
知识点1 1.当我们通过model建立一对多或者多对多的关系的时候,默认情况下,会关联所有的字段,如果我们使用djanog的forms的话,可以加一个属性,限制我这个字段只关联哪些字段,就是用下面的写 ...
- 整合使用持久层框架mybatis 使用SqlSessionTemplate模板类与使用映射接口 对比
spring中整合使用mybatis的用法总结 一:在Spring配置Mybatis 第一步:将mybatis-spring类包添加 到项目的类库中 第二步:编写spring和持久层衔接的xml文件, ...
- No appenders could be found for logger
在运行代码时,出现下面的错误, log4j:WARN No appenders could be found for logger (genericTest.GenericTest). log4j:W ...
- stark组件开发之自动生成URL
app01\model.py from django.db import models # Create your models here. class Depart(models.Model): i ...
- python 面向对象编程 之 反射
1 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被 ...
- 3A - Holding Bin-Laden Captive!
We all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long time. But rec ...
- C# 在网页中将Base64编码的字符串显示成图片
在写一个接口,返回的json里面有图片,是Base64编码的字符串. 测试接口的时候,发现原来在html显示,是直接可以将Base64编码的字符串显示成图片的. 格式如下: <img src=d ...
- nginx默认配置和默认站点启动
1.nginx的配置文件nginx.conf cd /etc/nginx/ vim nginx.conf 打开后的文件为: user nginx;worker_processes 1; error_l ...