JPA和Spring Boot Data JPA 介绍

一、简介

JPA,即Java Persistence API,是一种标准的技术,但不是一种框架,他可以让你将对象映射到关系型数据库中。

Spring Data JPA是Spring Data系列的一部分,可以轻松实现基于JPA的存储库。该模块处理对基于JPA的数据访问层的增强的支持。这使得使用数据访问技术构建Spring供电的应用程序变得更加容易。

Spring Data JPA旨在通过减少实际需要的数量来显着提高数据访问层的实现。作为开发人员,您编写存储库接口(包括自定义查找器方法),Spring将自动提供实现。

二、Spring Data JPA的特征

  1.  

 三、Spring Data JPA具体使用

Spring Data 存储库抽象概念的目标是显著的减少为各种持久性存储实现数据访问层所需的样板代码的数量。

  • 核心概念

Spring数据存储库抽象中的中心接口是存储库。它需要域类来管理,以及域类的ID类型作为类型的参数。这个接口主要作为一个标记接口来捕获要使用的类型,并帮助您发现扩展这个接口的接口。CrudRepository为正在管理的实体类提供了复杂的CRUD功能。

  •  CurdRepository接口如下:
package org.springframework.data.repository;

import java.util.Optional;

@NoRepositoryBean
public interface CrudRepository<T, ID> extends Repository<T, ID> {
    //保存给定的实体类
    <S extends T> S save(S var1);

    //保存所有给定的实体类
    <S extends T> Iterable<S> saveAll(Iterable<S> var1);

    //根据给定的ID查找实体类
    Optional<T> findById(ID var1);

    //根据给定的ID判断是否存在
    boolean existsById(ID var1);

    //返回所有的实体类
    Iterable<T> findAll();
    
    //返回根据给定的Id对应的实体类
    Iterable<T> findAllById(Iterable<ID> var1);

    //返回总数
    long count();

    //根据给定的ID进行删除
    void deleteById(ID var1);
    
    //根据给定的实体进行删除
    void delete(T var1);

    //根据给定的所有实体进行删除
    void deleteAll(Iterable<? extends T> var1);

    //删除所有
    void deleteAll();
}

此外也提供了持久化技术特定的抽象,比如JpaRepository或者MongoRepository,这些接口继承了CrudRepository,同时也暴露了除了CrudRepository一般的持久性技术无关的一些接口功能。

在JpaRepository上边有一个抽象的PagingAndSortingRepository 接口,这个接口添加了额外的方法分页访问实体。

  • PagingAndSortingRepository 接口如下:
package org.springframework.data.repository;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;

@NoRepositoryBean
public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {

    //按照排序规则查询所有实体
    Iterable<T> findAll(Sort var1);

    //分页查询
    Page<T> findAll(Pageable var1);
}
  • JpaRepository接口如下:
package org.springframework.data.jpa.repository;

import java.util.List;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Sort;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.QueryByExampleExecutor;

@NoRepositoryBean
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
    List<T> findAll();

    List<T> findAll(Sort var1);

    List<T> findAllById(Iterable<ID> var1);

    <S extends T> List<S> saveAll(Iterable<S> var1);

    void flush();

    <S extends T> S saveAndFlush(S var1);

    void deleteInBatch(Iterable<T> var1);

    void deleteAllInBatch();

    T getOne(ID var1);

    <S extends T> List<S> findAll(Example<S> var1);

    <S extends T> List<S> findAll(Example<S> var1, Sort var2);
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JPA是Java Persistence API的缩写,是Java EE规范中用于ORM(对象关系映射)的API。它定义了一组接口和注解,使开发人员可以通过编写面向对象的代码来操作数据库。引用提到了在pom.xml中添加了两个依赖,即org.springframework.data:spring-data-jpa和org.springframework.boot:spring-boot-starter-data-jpa,这是使用Spring Data JPA时需要添加的依赖。 Spring Data JPA是在JPA规范下对Repository层进行封装的实现。它提供了一套简化的方法和规范,使开发人员可以更轻松地进行数据库操作。引用中的代码片段展示了如何定义一个符合Spring Data JPA规范的DAO层接口。通过继承JpaRepository和JpaSpecificationExecutor接口,我们可以获得封装了基本CRUD操作和复杂查询的功能。 关于JPASpring Data JPA的区别,引用提到了一个很好的解释。JPA是一种规范,而Spring Data JPA是在JPA规范下提供的Repository层的实现。通过使用Spring Data JPA,我们可以方便地在不同的ORM框架之间进行切换,而不需要更改代码。Spring Data JPA还对Repository层进行了封装,省去了开发人员的不少麻烦。 综上所述,JPA是Java EE规范中的API,而Spring Data JPA是在JPA规范下的Repository层的实现。Spring Data JPA封装了JPA规范,提供了更方便的方法和规范,使开发人员可以更轻松地进行数据库操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [JPASpring-Data-JPA简介](https://blog.csdn.net/benjaminlee1/article/details/53087351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [JPA & Spring Data JPA详解](https://blog.csdn.net/cd546566850/article/details/107180272)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值