spring boot(三)数据访问

spring boot的数据访问

spring data是spring用来解决数据访问问题的的一揽子解决方案,spring data是一个伞形项目,包含了大量的关系型和非关系型数据库的访问解决方案。包含的子项目:

spring data JPA;

spring data MongoDB

spring data REST

spring data Elasticsearch等等等

spring data为我们使用统一的api对上述的存储技术进行支持,这是spring通过spring data common项目实现的,它是上述各个项目的依赖。spring data common的一个重要概念:spring data repository抽象。抽象的根接口是repository接口。它的子接口crudRepository定义了CRUD的相关操作(如findAll,save,saveAndFlush等)。crudRepository的子接口PagingAndSortingRepository定义了排序与分页的操作。

不同的数据访问技术提供了不同的repository实现,如spring data JPA是jpaRepository。

spring data JPA

是对ORM(领域模型和数据库表映射)技术提供的标准规范。所谓规范是只定义标准规则(如注解,借口),不提供实现。实现可以由hibernate等软件提供商实现。

1.定义一个继承jpaRepository的接口,这意味着默认已经有了findAll,save,saveAndFlush等这些方法;(如PersonRepository)

2.通过@EnableJpaRepositories(“数据层所在包”)开启Spring data JPA支持,

3.定义查询方法,可以根据关键字(And,Or,OrderBy等)定义;也可以@NamedQuery或@Query自定义sql语句;

4.实体类加上@Entity注解,指明是一个和数据库表映射的实体类(如Person)

5.运行:Person p = PersonRepository.findByNameAndAddress(name,address);

非关系型数据库

MongoDB

mongoDB是基于文档(document)的存储型数据库。

spring data mongoDB提供了 对象/文档 注解:

@Document:映射领域对象与mongoDB的一个文档

@Id:映射当前属性是id

@DbRef:当前属性将参考其他文档

@Field:为文档的属性定义名称

@version:将当前属性作为版本

eg. @Document //映射领域模型和mongoDB的文档

public class Person{

@Id //表明这个属性为文档id

private String id;

private String name;

@Field(“locs”) //此属性在文档中的名称为locs

private Collection<Location> locations = new LinkedHashSet<Location>();

}

public interface PersonRepository extends MongoRepository<Person,String>{

}

Redis

基于键值对的内存数据存储。

spring Data redis为我们提供了reidsTemplate和StringReidsTemplate两种模板来进行数据操作,其中StringReidsTemplate是只针对键值都是字符型的数据进行操作。template提供的主要数据访问方法:

opsForValue()操作只有简单属性的数据

opsForList()含list的数据

opsForSet()含set的数据

opsForZSet()含有zset(有序的set)数据

opsForHash()含hash的数据

当我们的数据存到redis时,key和value都是通过spring提供的serializer序列化到数据库的。

ValueOperates<String,String> stringRedisTemplate = redisTemplate.opsForValue();

stringRedisTemplate.set(“test”,”test”,10,TimeUnit.SECOND);

String value = stringRedisTemplate.get(“test”);

stringRedisTemplate.delete(“test”); //删除某个键

redisTemplate.opsForSet().add(“testSet”,”1”);

Set<String> members = redisTemplate.opsForSet().members(“testSet”);]

… …

spring data REST

spring data REST支持将Spring data JPA等的repository自动转换为REST服务。

使用GET请求直接访问:HTTP://localhost:8080/persons,得到列表数据json格式;HTTP://localhost:8080/persons/7,得到第7条数据。

节点路径为HTTP://localhost:8080/persons,是spring data REST默认的规则,在实体类之后加s形成路径。

对映射域名进行修改:在Repository的实现类上通过@RepositoryRestResource注解实现。

@RepositoryRestResource(path =  “people”)

public interface PersonRepository extends jpaRepository{}

原文地址:http://blog.51cto.com/13580976/2135267

时间: 2024-08-02 07:15:39

spring boot(三)数据访问的相关文章

Spring Boot 的数据访问:JPA 和 MyBatis

JPA(Java Persistence API)是一个基于O/R映射(Object-Relational Mapping)的标准规范,主要实现包括Hibernate.EclipseLink和OpenJPA等. orm框架的本质是简化编程中操作数据库的编码[2],JPA 方便程序员不写sql语句,而 MyBatis 呢,则适合灵活调试动态sql. 本文梳理了springboot整合jpa和mybatis的大体过程,并给出了两个demo. 1 在docker环境下运行数据库 首先安装vmware虚

Spring Boot框架 - 数据访问 - 整合Mybatis

一.新建Spring Boot项目 注意:创建的时候勾选Mybatis依赖,pom文件如下 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> 二.配置文件applica

Spring MVC或Spring Boot配置默认访问页面不生效?

相信在开发项目过程中,设置默认访问页面应该都用过.但是有时候设置了却不起作用.你知道是什么原因吗?今天就来说说我遇到的问题. 首先说说配置默认访问页面有哪几种方式. 1.tomcat配置默认访问页面 进入 tomcat 的 conf 目录,编辑 web.xml 文件.在 <web-app></web-app> 添加默认访问页面. <welcome-file-list> <welcome-file>index.html</welcome-file>

Java精选面试题之Spring Boot 三十三问

Spring Boot Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家. 问题一: Spring Boot.Spring MVC 和 Spring 有什么区别? SpringFrame SpringFramework 最重要的特征是依赖注入.所有 SpringModules 不是依赖注入就是 IOC 控制反转. 当我们恰当的使用 DI 或者是 IOC 的时候,我们可以开发松耦合应用.松耦合应用的单元测试可以很容易的进行. Spr

精选Spring Boot三十五道必知必会知识点!

Spring Boot.Spring MVC 和 Spring 有什么区别? 1.Spring Spring最重要的特征是依赖注入.所有 SpringModules 不是依赖注入就是 IOC 控制反转. 当我们恰当的使用 DI 或者是 IOC 的时候,我们可以开发松耦合应用.松耦合应用的单元测试可以很容易的进行. 2.Spring MVC Spring MVC 提供了一种分离式的方法来开发 Web 应用.通过运用像 DispatcherServelet,MoudlAndView 和 ViewRe

Spring Boot整合JdbcTemplate访问数据库

这篇文章是介绍 Spring Boot整合JdbcTemplate,配置数据源来访问数据库. 在pom文件里添加 spring-boot-starter-jdbc 和mysql依赖. <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId></dependency> <dep

(030)Spring Boot之RestTemplate访问web服务案例

每一个springboot工程都可以看做一个服务,这也是微服务的基础,使用RestTemplate访问springboot提供的web服务.如下: String BASE_URL="http://127.0.0.1:8080"; RestTemplate res=new RestTemplate(); String body= res.getForObject(BASE_URL+"/soa/product/20",String.class);//请求服务,返回jso

Spring Boot 出现 “无法访问此网站“ 问题排查

在用Spring boot 搭建项目的时候,也是按照往常的步骤搭建的,但是依然访问的时候出现"无法访问此网站" 的问题.并且项目启动是正常的. 我的启动信息: "E:\Program Files\Java\jdk1.8.0_171\bin\java" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:57206,suspend=y,server=n -XX:TieredStopAtLevel=1 -noveri

blog: Spring Boot - Actuator Web 访问开启

1. 概述 打开 Spring Boot Actuator 的 Web 访问 2. 场景 之前看 Spring 的时候, 曾经想了解当时的配置 后来发现, 确实有这么个工具 刚开始发现, 除了 actuator, 别的也看不了什么 3. 环境 os win10 jdk 1.8 ide ida 2018.1 spring spring boot 2.0.4 release 组件 thymeleaf starter-web devtool starter-test actuator browser

Spring boot(三)整合mybaties+thymeleaf实现基础crud

工程结构: 首先在pom文件中引入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apac