后端开发,简单说就是针对不同的业务建模,抽象数据,对数据进行各种CRUD。根据需求不同大概有这么几类的数据:数据库(mysql),nosql(redis),全文检索引擎(solr),大数据(hdfs),云存储和CDN。其中前2个用于交易事物操作,第三个重点是快速查找,模糊查找(找到最相似的),第四个用于分析(数据仓库的升级),最后是纯粹的可靠存储(多备份的硬盘)。spring中,把所有能存储和处理数据的地方叫Repository。其目标是,提供统一的数据访问接口,尽可能避免写sql。
一、相关jar概述
spring-data-commons封装了repository和相关的annotation
spring-data-jpa实现jpaRepository
二、实现
1、基本抽象
–Repository:仅仅是一个标识,表明任何继承它的均为仓库接口类,用于封装数据库的crud
–CrudRepository:继承Repository,实现了一组CRUD相关的方法
–PagingAndSortingRepository:继承CrudRepository,实现了一组分页排序相关的方法
–JpaRepository:继承PagingAndSortingRepository,实现一组JPA规范相关的方法
–自定义的 XxxxRepository需要继承 JpaRepository,这样的XxxxRepository接口就具备了通用的数据访问控制层的能力。
–JpaSpecificationExecutor:实现一组JPACriteria查询相关的方法
2、service层存在意义就是构建page,JPACriteria等,组合底层的repository,controller层直接可以调用对应的crud
3、Repository子接口中声明方法
* 1.不是随便声明的,而需要符合一定的规范
* 2.查询方法以find|read|get开发
* 3.涉及条件查询,条件的属性需要定义关键字连接
* 4.要注意的额是,条件的属性以字母大写
* 5.支持属性的级联查询,若当前类有符合条件的属性,则优先使用,则不使用级联属性
* 若需要使用级联属性,则属性之间使用——进行连接
4、自定义查询的例子
//为@Query注解传递参数的方式1:使用占位符
@Query("SELECT P FROM Person P where P.lastName=?1 AND P.email=?2")
List<Person> testQueryAnnotationParams1(String lastName,String email);
//为@Query注解传递参数的方式2:使用命名参数方式
@Query("SELECT P FROM Person P where P.lastName=:lastName AND P.email=:email")
List<Person> testQueryAnnotationParams2(@Param("email")String email,@Param("lastName")String lastName);
//Spring Data 运行在占位符上添加%%
@Query("select p from Person p where p.lastName like %?1% or p.email like %?2%")
List<Person> testQueryAnnotationLikeParam(String lastName,String email);
//设置nativeQuery=true 可以使用原生的sql查询
@Query(value="SELECT count(id) FROM jpa_persons",nativeQuery=true)
public long getTotalCount();
//可以通过自定义的JPQL 完成update和delete操作,注意:JPQL不支持Insert操作
//在@Query注解中编写JPQL语句,但必须使用@Modify进行修饰,以通知SpringData,这是一个Update或者Delete
//Update或者delete操作,需要使用事务,此时需要定义Service层,在service层的方法上添加事务操作
//默认情况下,SpringData的每个方法上有事务,但都是一个只读事务,他们不能完成修改操作
@Modifying
@Query("update Person p set p.email=:email where id=:id")
void updatePersonEmail(@Param("id")Integer id,@Param("email")String email);
5、对应实现
jpa ->JpaRepository
solr -> SolrTemplate
redis->RedisTemplate
相关推荐
Spring Data JPA是Spring框架的一部分,它是一种简便的数据访问层(Repository)的实现技术,主要用来简化JPA(Java Persistence API)实体数据访问代码的编写。Spring Data JPA允许开发者通过简单的接口和注解配置...
赠送jar包:spring-data-keyvalue-2.5.5.jar; 赠送原API文档:spring-data-keyvalue-2.5.5-javadoc.jar; 赠送源代码:spring-data-keyvalue-2.5.5-sources.jar; 赠送Maven依赖信息文件:spring-data-keyvalue-...
在本项目中,Maven将用于管理各种库的依赖关系,包括Spring框架的不同模块,Spring Data JPA,以及其它必要的第三方库。Maven的POM.xml文件定义了项目的依赖结构,使得开发者可以轻松地集成和更新项目所依赖的库,而...
4. **SpringData Commons**:提供了通用的Repository功能,如分页、排序等,是其他模块的基础。 在教程的后续章节,你将学习到如何使用SpringData进行复杂查询,如 Specifications 和 Querydsl,它们允许你在运行时...
### Spring-data-jpa 的核心知识点解析 #### 一、Spring-data-jpa 基本介绍 Spring-data-jpa 是 Spring 家族中的一个重要成员,它主要用于简化基于 Java Persistence API (JPA) 的数据访问层(DAO)的开发工作。...
**Spring Data JPA 简单案例** Spring Data JPA 是 Spring 框架的一个模块,它为使用 JPA(Java Persistence API)提供了强大的支持,简化了数据访问层的开发。通过使用 Spring Data JPA,我们可以避免编写大量重复...
Spring技术内幕:深入解析Spring架构与设计原理 Spring技术内幕 Spring是一个基于Java的开源框架,旨在简化Java企业应用的开发。Spring的目标是提供一个简洁、灵活、可扩展的框架,以帮助开发者快速构建企业级...
这里我们将详细讨论Spring MVC、Spring Data以及JPA和Hibernate的关系和用法。 首先,Spring MVC是Spring框架的一部分,专门用于构建Web应用程序。它遵循模型-视图-控制器(MVC)设计模式,提供了一种分层架构,...
在源码中,`org.springframework.data.elasticsearch.core.ElasticsearchOperations`接口是核心,它定义了一系列操作Elasticsearch的方法,如索引创建、文档增删改查、搜索等。 接着,让我们看看如何配置Spring ...
【标题】"spring data jpa + spring + json demo"揭示了这个项目是关于使用Spring Data JPA、Spring框架以及JSON处理的一个示例应用。Spring Data JPA是Spring框架的一个模块,它简化了JPA(Java Persistence API)...
《Spring Data实战源码》是基于Spring Data框架的一本深入解析书籍,其随书源码提供了丰富的示例和实践案例,帮助读者理解Spring Data的核心概念和技术。Spring Data是一个强大的库,旨在简化数据库访问并增强数据...
Spring Data JPA 是一个基于 Java 的开源框架,它属于 Spring Data 家族的一部分,旨在简化 Java 应用中的数据访问层代码,特别针对基于 JPA(Java Persistence API)的数据持久化操作。本教程将详细介绍 Spring ...
在深入解析Spring技术内幕第2版中,会详细探讨Spring框架的核心架构与设计原理,Spring作为一个轻量级的Java平台,提供了全面的编程和配置模型,是企业级Java应用程序开发中广泛使用的技术之一。 Spring的核心特性...
通过学习和实践这个项目,开发者可以在短短三小时内快速掌握SpringBoot整合SpringData JPA的基础,从而提升开发效率,更好地应对各种数据访问的需求。这是一条高效的学习路径,尤其适合Java Web开发的初学者。
《Spring Data JPA从入门到精通》是一本深入解析Spring Data JPA的书籍,它以Spring Boot框架为核心,旨在帮助读者全面理解并熟练运用Spring Data JPA进行数据库操作。Spring Data JPA是Spring Framework的一个模块...
**标题与描述解析** 标题"neo4j整合spring data文档"指出我们要探讨的主题是关于将图数据库Neo4j...在实际项目中,详细阅读"spring-data-neo4j-reference(ne4j结合spring data).pdf"文档将进一步深入掌握相关知识。
《Spring Data实战》从Spring Data背景知识、关系型数据库、NoSQL、快速应用开发、大数据、数据网格6个方面深度解析了数据访问技术,介绍的内容都是最流行和前沿的,其中文档数据库、图数据库、键/值存储、Hadoop...
标题中的"spring springdata springmvc"提及了三个关键的Java Web开发框架,它们分别是Spring、Spring Data和Spring MVC。这三者是构建现代、高效、模块化的Java后端应用程序的核心组件。 Spring框架是一个全面的...
《SpringDataJpa整合FreeMarker源码解析》 在当今的软件开发中,Spring Boot、Spring Data JPA和FreeMarker的整合已经成为了构建高效、简洁Web应用的常见选择。本篇将深入探讨如何将这三个强大的工具结合在一起,...
《Spring Data Solr深度解析与实战指南》 Spring Data Solr是Spring Data项目的一个子模块,专门用于简化Apache Solr的集成。它提供了一种声明式的方式来操作Solr,使得在Java应用程序中处理Solr查询变得更为简洁。...