Spring Data 是Spring 的一个子项目, 旨在统一和简化对各类型持久化存储, 而不拘泥于是关系型数据库还是NoSQL 数据存储。无论是哪种持久化存储, 数据访问对象(或称作为DAO,即Data Access Objects)通常都会提供对单一域对象的CRUD (创建、读取、更新、删除)操作、查询方法、排序和分页方法等.
Spring Data的子项目有:
Commons: 提供共享的基础框架,适合各个子项目使用,支持跨数据库持有化
Hadoop: 基于spring的Hadoop作业配置和一个pojo编程模型的mapreduce作业
key-value: 集成了Redis和Riak, 提供多个常用场景下的简单封装
Document: 集成了文档数据库
Graph: 集成Neo4j提供强大的基于POJO的编程模型
Graph Roo AddOn
JDBC Extensions: 支持oracle RAD,高级队列和高级数据类型
JPA: 简化创建JPA数据访问层和跨存储的持久层功能
Mapping: 基于Grails的提供对象映射框架,支持不同的数据库
Examples: 示例程序,文档和图数据库
Guidance: 高级文档
Spirng Data Repository抽象
一, Docker
Docker是一种轻量级容器技术,类似于虚拟机技术.
是直接运行在当前操作系统之上,也实现了虚拟机技术的资源隔离,性能远远高于虚拟机
Linux安装: sudo yum update
sudo yum install docker
windows下安装: 是通过Boot2Docker软件实现的,安装前要确认BIOS设置中的CPU虚拟化技术已开启.
常用命令: docker search 镜像名
docker pull 镜像名
docker images
docker rmi image-id
docker run --name container-name -d image-name
docker ps
docker stop/start container-name/container-id
docker logs container-id/container-name
二, Spring Data JPA
1, 定义数据访问层
只需定义一个继承JpaRepository的接口即可, JpaRepository源码如下:
@NoRepositoryBean
public interface JpaRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID> {
List<T> findAll();
List<T> findAll(Sort sort);
List<T> findAll(Iterable<ID> ids);
<S extends T> List<S> save(Iterable<S> entities);
void flush();
T saveAndFlush(T entity);
void deleteInBatch(Iterable<T> entities);
void deleteAllInBatch();
T getOne(ID id);
}
2, 配置使用Spring Data JPA
通过注解@EnableJpaRepositories来开启Spring Data JPA支持
3, 定义查询方法
1), 根据属性查询
findBy, And, Or, Like, Between等
2),限制结果集数量: top, first
e.g. findFirst10ByName
3), NameQuery查询
e.g.
@Entity
@NameQuery(name="person.findByName","select * from person where name =?1")
public class Person{}
4), @Query查询
5),更新查询 e.g.
@Modifying
@Transactional
@Query("update person set name=?1")
int setName(String name);
6),排序和分页
sort: findByName(xx,new Sort(Direction.ASC,"age"));
Page: findByName(xx, new PageRequest(0,10));
其中page接口可以获得当前页面的记录,总页数,总记录数是否有上一页下一页.
4, 自定义Repository实现
1), @NoRepositoryBena
2), 继承
3), 方法,dosomething
5, Spring Boot的支持
1), jdbc的自动配置
源码在org.springframework.boot.autoconfigure.jdbc下
2), 对JPA的自动配置
源码在 org.springframework.boot.autoconfigure.orm.jpa
3), Spring Data JPA的自动配置
源码在: org.springframework.boot.autoconfigure.data.jpa
三, Spring Data Rest
1, Spring MVC中配置Spring Data Rest
可通过继承类或加@Import
e.g.
@Configuration
public class xxx extends RepositoryRestMvcConfiguration{}
或
@Configuration
@Import(RepositoryRestMvcConfiguration.class)
public class xxxxx{}
2, application.properties配置
spring boot已自动配置了RepositoryRestConfiguration来支持
只需添加依赖spring-boot-starter-data-rest
在application.properties中以spring.data.rest为前缀的属性来配置
e.g.
spring.data.rest.base-path=
spring.data.rest.default-page-size=
3, Rest测试
安装Chrome插件Postman REST Client来测试REST
服务测试:
1), jquery
e.g. $.ajax({
type:"GET",
datatype:"json",
url:"",
success:function(data){}
});
AngularJS:
$http:get(url); $http.post(url,data); $http.put(url,data); $http.delete(url);
四, 声明式事务
Spring的事务机制是用同一的机制来处理不同的数据访问技术的事务处理.
数据访问技术 | 实 现 |
JDBC | DataSourceTransactionManager |
JPA | JpaTransactionManager |
Hibernate | HibernateTransactionManager |
JDO | JdoTransactionManager |
分布式事务 | JtaTransactionManager |
1, 声明式事务
@Transactional: 来自org.springframework.transaction.annotation
表示该方法需要事务支持
@EnableTransactionManagement
注解在配置类上开启事务支持
2, 注解事务
@Transactional有如下的属性定义事务的行为:
属性 | 含 义 | 默认值 |
propagationtion |
定义事务的生命周期 REQUIRED, REQUIRED_NEW NESTED SUPPORTS NOT_SUPPORTED MANDATORY |
REQUIRED |
issolation | DEFAULT | |
timeout | TIMEOUT_DEFAULT | |
readOnly | false | |
rollbackFor | Throwable的子类 | |
noRollbackFor | Throwable的子类 | |
五, 数据缓存
Spring定义了org.springframework.cache.CacheManagement 和
org.springframework.cache.Cache接口来统一不同的缓存技术.
1, CacheManager
CacheManager | 描 述 |
SimpleCacheManager | 使用简单的Collection来存储缓存, 主要用来测试用途 |
ConcurrentMapCacheManager | 使用XoncurrentMap来存储缓存 |
NoOpCacheManager | 仅测试用途,不会实际存储E缓存 |
EhCacheCacheManager | 使用EhCache |
GuavaCacheManager | |
HazelcastCacheManager | |
JCacheCacheManager | |
RedisCacheManager |
2, 声明式缓存注解
注解 | 解释 |
@Cacheable | 在方法执行前先查看是否有缓存,有,则直接返回缓存 |
@CachePut | 无论如何把方法的返回值放到缓存中 |
@CacheEvict | 将一条或多条数据从缓存中删除 |
@Caching | 组合多个注解策略在一个方法上 |
3, 开启事务缓存支持
@EnableCaching即可
六, 非关系型数据库NoSQL
NoSQL是对于与使用关系作为数据管理的数据库系统的统称.
NoSQL有文档存储,图形关系存储,键值对存储.
MongoDB: 基于文档
相关推荐
Spring Boot 进阶笔记 Spring Boot 是由 Pivotal 团队提供的全新框架,旨在简化 Spring 应用的初始搭建和开发过程。它使用 “约定大于配置” 的理念,让项目快速运行起来。 Spring Boot 设计的目的是让开发者尽可能...
Spring Boot 是一个由 Pivotal 团队开发的框架,旨在简化基于 Spring ...随着对框架的深入理解和实践,开发者可以利用更多高级特性,如数据访问、缓存、消息队列、安全性和测试支持,进一步提升应用的功能和性能。
基于给定的信息“Spring Boot笔记”,我们可以从以下几个方面来详细阐述相关的知识点: ### Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目标是简化新Spring应用的初始搭建以及开发过程。该...
5. **开箱即用**:Spring Boot 集成了大量的功能模块,如安全、数据访问、认证等,几乎无需额外配置即可使用。 #### 三、Spring 的发展历程 ##### Spring 1.x 时代 在 Spring 1.x 时期,开发者主要通过 XML 文件...
在本篇Spring Boot笔记中,我们将探讨Spring Boot的核心特性、如何创建一个简单的Spring Boot应用以及相关的Maven配置。Spring Boot是Spring框架的一个扩展,旨在简化Spring应用的初始搭建以及开发过程,提供了一种...
9. **数据访问** Spring Boot对各种数据库的支持也很全面,如JDBC、JPA(Hibernate)、MyBatis等。它简化了数据源配置,并提供了数据迁移工具Flyway和Liquibase。 10. **安全控制** Spring Security是Spring Boot...
Spring Boot提供了大量的自动配置模块,可以自动配置Spring以及第三方库,如Web开发、数据访问、消息服务等。通过starter的依赖,开发者可以不用编写任何配置代码,快速开始开发,极大地提高了开发效率和项目的启动...
### Spring Boot 学习笔记知识点总结 #### 一、Spring发展史 - **Spring1.x时代**:在Spring1.x的时代,主要通过XML文件来配置Bean。随着项目的规模扩大,XML配置文件的数量也随之增加,这导致开发人员需要频繁地...
文档《Spring Boot 学习笔记完整教程.pdf》涵盖了多个知识点,详细介绍了Spring Boot的基本使用方法以及一些高级功能的实现。以下是根据文档内容整理的知识点: 1. Spring Boot入门: Spring Boot让开发者能够通过...
尚硅谷的 Spring Boot 笔记提供了全面的学习资源,帮助学习者深入理解并掌握这个强大的框架。 1. **起步依赖(Starters)** Spring Boot 的核心特性之一是起步依赖,它们是一系列预先配置好的 Maven 或 Gradle ...
Spring Boot 2.5.0 支持 MyBatis,能够快速搭建数据库访问层。 项目开发流程 在 Spring Boot 2.5.0 中,项目开发流程通常包括需求分析、概要设计、详细设计、编码、测试和部署等几个阶段。在每个阶段都需要遵守...
Spring Boot 是一个快速开发框架,可以迅速搭建出一套基于 Spring 框架体系的应用,是 Spring Cloud 的基础。 Spring Boot 开启了各种自动装配,从而简化代码的开发,不需要编写各种配置文件,只需要引入相关依赖就...
【Spring Boot 入门】 Spring Boot 是一个由 Pivotal 团队开发的框架,它旨在简化Spring应用程序的初始搭建以及开发过程。Spring Boot通过自动配置、内嵌式Web服务器和大量的起步依赖(starters)使得Java开发者...
Spring Boot使得创建独立的,基于生产级别的基于Spring的应用程序变得容易,您可以“运行”它们。 大多数Spring Boot应用程序需要最少的Spring配置。 SpringBoot其实就是构建Spring应用程序的“脚手架”,能够帮助...
`@SpringBootTest`注解可以启动整个Spring Boot应用进行集成测试,`@WebMvcTest`和`@DataJpaTest`则分别针对Web层和数据访问层进行隔离测试。 通过这份笔记,你可以深入了解Spring Boot的核心概念和实践技巧,无论...
2. **起步依赖**:Spring Boot的起步依赖是解决依赖管理问题的一种创新方式,通过在`pom.xml`或`build.gradle`文件中声明特定的起步依赖,可以轻松引入所需的模块,如数据访问、Web服务等。 3. **Actuator**:...
7. @ConfigurationProperties注解:在Spring Boot中,可以使用@ConfigurationProperties注解来绑定配置文件中的值到一个Java对象,以便于管理和访问配置。使用@ConfigurationProperties注解时,需要在项目中导入...