All Projects → keveon → spring-data-jpa-demo

keveon / spring-data-jpa-demo

Licence: Apache-2.0 license
这是一个 Spring Data JPA 的 demo, 旨在演示大部分常用的使用方法。

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to spring-data-jpa-demo

Angularjs Springmvc Sample Boot
A RESTful sample using Spring Boot, Spring MVC, Spring Data and Angular/Bootstrap.
Stars: ✭ 309 (+618.6%)
Mutual labels:  jpa, lombok, spring-data-jpa
Jpa Spec
A JPA Query By Specification framework.
Stars: ✭ 620 (+1341.86%)
Mutual labels:  jpa, spring-data-jpa
Spring Boot Mysql Rest Api Tutorial
Building a Restful CRUD API using Spring Boot, Mysql, JPA and Hibernate
Stars: ✭ 279 (+548.84%)
Mutual labels:  jpa, spring-data-jpa
Fw Cloud Framework
基于springcloud全家桶开发分布式框架(支持oauth2认证授权、SSO登录、统一下单、微信公众号服务、Shardingdbc分库分表、常见服务监控、链路监控、异步日志、redis缓存等功能),实现基于Vue全家桶等前后端分离项目工程
Stars: ✭ 717 (+1567.44%)
Mutual labels:  jpa, lombok
HRMS-Backend
A Spring Boot application. This repository contains the backend part of the Human Resources Management System. The project has been written solely in Java Language.
Stars: ✭ 24 (-44.19%)
Mutual labels:  jpa, lombok
spring-boot-data-jpa-mysql
Spring Boot Rest CRUD API example - Spring Data JPA to interact with MySQL/PostgreSQL database.
Stars: ✭ 89 (+106.98%)
Mutual labels:  jpa, spring-data-jpa
Favorites Web
云收藏 Spring Boot 2.X 开源项目
Stars: ✭ 4,485 (+10330.23%)
Mutual labels:  jpa, spring-data-jpa
Spring Data Jpa Reference Documentation
Spring Data JPA 参考指南 中文版
Stars: ✭ 154 (+258.14%)
Mutual labels:  jpa, spring-data-jpa
X Admin
致力于快速开发中小型后台管理系统项目模板(更新中......)
Stars: ✭ 123 (+186.05%)
Mutual labels:  jpa, lombok
Jplusone
Tool for automatic detection and asserting "N+1 SELECT problem" occurences in JPA based Spring Boot Java applications and finding origin of JPA issued SQL statements in general
Stars: ✭ 91 (+111.63%)
Mutual labels:  jpa, spring-data-jpa
spring-discord-bot
Discord all-purpose bot, made using Spring Boot, JPA, Hibernate, REST, HikariCP. Written for fun, do not take this serious.
Stars: ✭ 26 (-39.53%)
Mutual labels:  jpa, spring-data-jpa
Spring Framework Petclinic
A Spring Framework application based on JSP, Spring MVC, Spring Data JPA, Hibernate and JDBC
Stars: ✭ 251 (+483.72%)
Mutual labels:  jpa, spring-data-jpa
vogon-java
Vogon - A simple personal finance tracker using Spring Boot and AngularJS
Stars: ✭ 16 (-62.79%)
Mutual labels:  jpa, spring-data-jpa
jpa-manytomany-extracolumns-springboot-maven-mysql
JPA Many-To-Many Extra Columns Relationship Mapping Example with Spring Boot, Maven and MySQL
Stars: ✭ 15 (-65.12%)
Mutual labels:  jpa, spring-data-jpa
Spring-Boot-2
Spring Boot 2.x examples
Stars: ✭ 33 (-23.26%)
Mutual labels:  jpa, spring-data-jpa
Spring Blog
Spring Boot base Blog
Stars: ✭ 109 (+153.49%)
Mutual labels:  lombok, spring-data-jpa
BusinessInfrastructurePlatformGroupVersion
A java web project based on Spring Boot using MySQL, Spring MVC, Hibernate, Spring Data JPA, Query DSL, Lombok, Logback, etc.
Stars: ✭ 90 (+109.3%)
Mutual labels:  lombok, spring-data-jpa
Ueboot
springboot2.2、spring-data-jpa、iView4、Vue2 、代码生成器、shiro权限管理、前后端分离、java后台管理系统快速开发框架,通过该框架可以在分钟级别内完成单表的前后端增删改查功能。脚手架工程: https://github.com/ueboot/ueboot-starter ,基于这个工程可以直接开发
Stars: ✭ 270 (+527.91%)
Mutual labels:  lombok, spring-data-jpa
Spring Boot Sample App
Sample app generated from my spring boot archtype on :https://github.com/Romeh/spring-boot-quickstart-archtype
Stars: ✭ 81 (+88.37%)
Mutual labels:  jpa, lombok
Spring Data Jpa Entity Graph
Spring Data JPA extension allowing full dynamic usage of EntityGraph on repositories
Stars: ✭ 221 (+413.95%)
Mutual labels:  jpa, spring-data-jpa

Spring Data Jpa 常用功能演示

配套说明请查看:万字长文带你领略 Spring 全家桶带来的极速开发体验

项目简介

框架介绍

Spring Data JPASpring Data 系列的一部分, 使得轻松实现基于JPA的存储库变得更容易. 该模块处理对基于JPA的数据访问层的增强支持. 它使得更容易构建使用数据访问技术的Spring-powered应用程序. Spring Data JPA 的目标是通过让一些必须的工作变得更简单, 来显著提高数据访问层的实现. 作为一个开发者, 你写你的仓库界面, 包括自定义查询方法, 而 Spring 给你提供自动实现.

特点

  • 对建立基于Spring 和 JPA 的库的支持.

  • 支持 Querydsl predicates和安全类型的 JPA 查询.

  • Transparent auditing of domain class.

  • 分页支持, 动态查询执行, 可以集成自定义数据访问代码.

  • @Query 注明查询引导时验证.

  • 支持基于XML的实体映射.

  • 引入 @EnableJpaRepositories , 实现 JavaConfig based 仓库配置.

正式开始

准备工作

在开始提到, 本项目采用SpringBoot做基础架构支撑, 项目中使用 spring-data-jpa 的推荐方法是使用依赖关系管理系统,也就是我们平时所说的包管理器、构建工具.下面两种工具对应的代码段可以复制并粘贴到您的项目中. 如需帮助, 请参阅我们使用 MavenGradle 构建的入门指南.

Maven
<dependencies>
    ...
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    ...
</dependencies>
Gradle
dependencies {
    ...
    compile 'org.springframework.boot:spring-boot-starter-data-jpa'
    ...
}

Jpa提供的接口

为了使用方便, spring-data-jpa已经提供了多个接口, 只需要继承其中一个, spring-data-jpa将会自动实现并提供相应的实现. 继承/实现关系如下:

 QueryDslJpaRepository
 ┣━ QueryDslPredicateExecutor
 ┗━ SimpleJpaRepository
     ┣━ JpaSpecificationExecutor
     ┗━ JpaRepository
         ┣━ QueryByExampleExecutor
         ┗━ PagingAndSortingRepository
             ┗━ CrudRepository
                 ┗━Repository

这些 Repository 都是 spring-data-commons 提供给我们的核心接口, spring-data-commonsSpring Data 的核心包. 这个接口中为我们提供了数据的分页方法, 以及排序方法. spring-data 让我们省了很多心了, 一切都按照这个规范进行构造, 就连业务系统中常用到的一些操作都为我们考虑到了, 而我们只需更用心的去关注业务逻辑层. spring-datarepository 的颗粒度划得很细.

  • Repository:最基本的接口, 不提供任何功能, 仅作为 SpringData 的一个标记, 并提供实现.这个接口只是一个空的接口, 目的是为了统一所有 Repository 的类型, 其接口类型使用了泛型, 泛型参数中T代表实体类型, ID则是实体中id的类型. 任何直接或间接继承此接口的类或接口, 均会被Spring扫描到.

  • CrudRepository:提供最基本的增删改查方法.此接口中的方法大多是我们在访问数据库中常用的一些方法, 如果我们要写自己的DAO的时候, 只需定义个接口来集成它便可使用了.

  • PagingAndSortingRepository:提供基本的分页及排序功能, 并同时提供CrudRepository接口的功能.

  • QueryByExampleExecutor:提供查询功能, 后期会具体讲解.

  • JpaRepository:这个接口继承自 PagingAndSortingRepository , 里面的方法都是一些简单的操作, 并未涉及到复杂的逻辑. 当你在处理一些简单的数据逻辑时, 便可继承此接口.

  • JpaSpecificationExecutor:提供 criteria 查询, 排序、支持分页, 此接口没有父类(不包括 Object ), 即没有上级接口.

  • SimpleJpaRepository:实现 JpaRepositoryJpaSpecificationExecutor 接口, 使用 hibernateEntityManager做持久化相关处理. 您也可以更换为其他 JPA 实现, 如:EclipseLinkTopLink 等.

  • QueryDslPredicateExecutor:提供 Querydsl 查询的接口.

  • QueryDslJpaRepository:继承 SimpleJpaRepository 类, 实现 QueryDslPredicateExecutor 接口.

附录A:Github 常用按钮说明

  • Watch:关注该项目, 作者有更新的时候, 会在你的 Github 主页有通知消息.

  • Star:收藏该项目, 在你的头像上有一个 "Your stars" 链接, 可以看到你的收藏列表, 以方便下次进来.

  • Fork:复制一份项目到自己的 Github 空间上, 你可以自己开发自己的这个地址项目, 然后 Pull Request 给项目原主人.

联系方式

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].