当前位置: 首页> 健康> 美食 > Spring Data JPA

Spring Data JPA

时间:2025/7/13 10:50:10来源:https://blog.csdn.net/weixin_64842400/article/details/141893077 浏览次数:0次

前言:

JPA 是ORM的一个接口规范,其中Hibernate是JPA的一种实现。

Hibernate 是一个完整的ORM框架,‌对JDBC进行了非常轻量化的封装,实现了JPA规范,‌并提供附加功能,‌例如缓存和查询优化。‌Hibernate通过使用映射文件或注解来定义对象与数据库表之间的映射关系,‌并提供了一系列的API来执行CRUD操作。‌

MyBatis 是一个轻量级且灵活的持久化框架,‌半自动化的持久层框架(相对于全自动的Hibernate)。它并不完全遵循JPA规范。‌MyBatis的核心思想是将SQL语句直接写在XML配置文件中,‌或者使用注解方式写在Java代码中。‌通过映射文件或注解,‌MyBatis能够将SQL查询结果映射到Java对象中。‌

JPA:

Java Persistence API(JPA)是一个Java规范,旨在提供对象/关系映射(ORM)功能。它允许开发人员以对象的方式操作数据库,而不需要关心底层的数据存储细节。JPA的核心概念包括实体(Entity)、持久化上下文(Persistence Context)和实体管理器(EntityManager)。实体是与数据库表相对应的Java类,持久化上下文管理这些实体的生命周期,实体管理器负责操作这些实体。

Spring Data JPA :

Spring Data JPA是Spring框架的一部分,它基于JPA规范提供了一套简化数据访问层(Repository)的实现。Spring Data JPA的主要优势包括减少模板代码、自动实现数据访问接口、支持动态查询构建等。使用Spring Data JPA,开发者可以快速地开发出功能完整的数据访问层代码。实体管理器(EntityManager)通常由Spring框架自动创建和管理。开发者无需手动操作实体管理器,可以直接使用Spring Data JPA提供的Repository接口(自定义接口则直接继承JpaRepository)进行数据操作。

public interface UserRepository extends JpaRepository<User, Long> {
    User findByName(String name);
}

Spring Data JPA核心是基于接口编程,开发者定义接口继承自 JpaRepository ,Spring Data JPA会自动为这些接口生成实现类。这大大减少了开发者编写通用数据访问代码的工作量。

通过继承 JpaRepository 接口, UserRepository 接口就能够使用一系列预定义的方法,如 findAll() , findById() , save() 等,并且可以自定义查询方法如 findByName() 。

配置也非常简单,只需要在yaml文件中进行如下配置 即可

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/your_database
    username: your_username
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.Driver
 
  jpa:
    hibernate:
     .ddl-auto: update
    show-sql: true

 Spring Data JPA 的使用:

需要编写一个接口,然后让该接口继承JpaRepository接口(JPA提供的),这样就能使用基本的几个方法,如save ,findById,delete。如果需要自己自定义一些功能,类似MyBatis的注解开发,在value属性里面编写sql字符串。将来直接调用这个接口下的方法就行,不需要写接口的实现类。【因为JPA会自动生成这些接口的实现类】

如果是做一些简单的分页查询,我们可以使用JPA内置的分页:即,在接口中包含一个Pageable类型的参数,执行时会被Spring Data JPA统一拦截。

当然,如果是复杂点的分页,还是不建议用Spring Data JPA,建议用自定义SQL查询,提供了更高的灵活性,实现更复杂的查询逻辑,如动态SQL条件、处理特定数据库的兼容性,同时也更方便地记录日志和调试SQL语句,便于问题排查。
自定义SQL查询构建:【一般公司中使用的都是这种方案】
  使用StringBuider动态拼接SQL查询字符串,根据传入参数动态添加条件


  通过EntityManager创建原生SQL查询


  设置参数,使用Pageable设置分页信息 使用PageImpl包装查询结果,返回分页对象。

 参考:掌握Spring Boot分页技术:实现高效数据查询-CSDN博客

关键字:Spring Data JPA

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: