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注解或 ...
随机推荐
- Codeforces Beta Round #65 (Div. 2)
Codeforces Beta Round #65 (Div. 2) http://codeforces.com/contest/71 A #include<bits/stdc++.h> ...
- crm作业知识点集合[三]
知识点1 我们要实现一个这样的功能,在学生表中,可以查看每个学生的报名的班级的所有的成绩,就是下图的效果 1.首先我们需要在学生表中自定义一列,这一列的内容就是一个a标签,指向另外一个页面,而我们在另 ...
- classLoader.getResourceAsStream中文乱码
一直用一个方法安然无恙,今天在新项目中突然乱码了,原代码: ClassLoader classLoader = Thread.currentThread().getContextClassLoader ...
- ecplise自动提示失效,使用补全自动提示快捷键(Alt+/),但只显示“No Default Proposals”
在这里设置了自动提示,但是在使用的时候自动提示实现了.甚至使用补全自动提示快捷键(Alt+/),只显示“No Default Proposals”.今天在网上搜索了一下结果,主要有一下几种方法: 1. ...
- 关于控制反转(IOC)容器 ,依赖注入(DI)模式必读文章收集
推荐一篇国外設計大師Martin Fowler的大作:Inversion of Control Containers and the Dependency Injection pattern http ...
- centos7+nginx+rtmp+ffmpeg搭建流媒体服务器
1.安装前需要的工具 #net-tool 查本地IP #wget 下载安装包 #unzip 解压zip包 #gcc gcc-c++ perl 编译软件包用 yum install -y net-too ...
- AppStore企业账号打包发布APP流程详解
一.通过企业账号申请证书 1 Certificate Signing Request (CSR)文件 在Mac系统中进入“钥匙串访问”,选择“钥匙串访问”-“证书助理”-“从证书颁发机构请求证书…”, ...
- postfix 如何设置邮件头翻译的功能
开始按http://semi-legitimate.com/blog/item/how-to-rewrite-outgoing-address-in-postfix 博客中的方法进行设置,是可以替换, ...
- robot framework测试驱动无法定位页面元素
robot framework错误提示: [ WARN ] Keyword 'Capture Page Screenshot' could not be run on failure: NoSuchW ...
- BUG(1):一个关于指针的bug
是时候记录一下这个让我栽了两次的bug了. 具体情况如下: #include <stdio.h>#include <stdlib.h> struct app_info_t { ...