Spring Data JPA 是 Spring Data 系列的一部分,可以轻松实现基于 JPA 的存储库。该模块处理对基于 JPA 的数据访问层的增强支持。它使得构建使用数据访问技术的 Spring 支持的应用程序变得更加容易。
长期以来,实现应用程序的数据访问层一直很麻烦。必须编写太多的样板代码来执行简单的查询以及执行分页和审核。 Spring Data JPA 旨在通过减少实际需要的工作量来显着改进数据访问层的实现。作为开发人员,您编写存储库接口,包括自定义查找器方法,Spring 将自动提供实现。
JPA 实体的 CRUD 方法的实现
根据查询方法名称动态生成查询
通过查询方法透明触发 JPA NamedQueries
提供基本属性的实现域基类
支持透明审核(创建、最后更改)
集成自定义存储库代码的可能性
Spring 与自定义命名空间轻松集成
该项目受 Spring 行为准则管辖。通过参与,您应该遵守本行为准则。请将不可接受的行为报告至 [email protected]。
以下是在 Java 中使用 Spring Data Repositories 的应用程序的快速预览:
public interface PersonRepository extends CrudRepository < Person , Long > {
List < Person > findByLastname ( String lastname );
List < Person > findByFirstnameLike ( String firstname );
}
@ Service
public class MyService {
private final PersonRepository repository ;
public MyService ( PersonRepository repository ) {
this . repository = repository ;
}
public void doWork () {
repository . deleteAll ();
Person person = new Person ();
person . setFirstname ( "Oliver" );
person . setLastname ( "Gierke" );
repository . save ( person );
List < Person > lastNameResults = repository . findByLastname ( "Gierke" );
List < Person > firstNameResults = repository . findByFirstnameLike ( "Oli%" );
}
}
@ Configuration
@ EnableJpaRepositories ( "com.acme.repositories" )
class AppConfig {
@ Bean
public DataSource dataSource () {
return new EmbeddedDatabaseBuilder (). setType ( EmbeddedDatabaseType . H2 ). build ();
}
@ Bean
public JpaTransactionManager transactionManager ( EntityManagerFactory emf ) {
return new JpaTransactionManager ( emf );
}
@ Bean
public JpaVendorAdapter jpaVendorAdapter () {
HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter ();
jpaVendorAdapter . setDatabase ( Database . H2 );
jpaVendorAdapter . setGenerateDdl ( true );
return jpaVendorAdapter ;
}
@ Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory () {
LocalContainerEntityManagerFactoryBean lemfb = new LocalContainerEntityManagerFactoryBean ();
lemfb . setDataSource ( dataSource ());
lemfb . setJpaVendorAdapter ( jpaVendorAdapter ());
lemfb . setPackagesToScan ( "com.acme" );
return lemfb ;
}
}
添加 Maven 依赖:
< dependency >
< groupId >org.springframework.data</ groupId >
< artifactId >spring-data-jpa</ artifactId >
< version >${version}</ version >
</ dependency >
如果您希望获得即将发布的主要版本的最新快照,请使用我们的 Maven 快照存储库并声明适当的依赖项版本。
< dependency >
< groupId >org.springframework.data</ groupId >
< artifactId >spring-data-jpa</ artifactId >
< version >${version}-SNAPSHOT</ version >
</ dependency >
< repository >
< id >spring-snapshot</ id >
< name >Spring Snapshot Repository</ name >
< url >https://repo.spring.io/snapshot</ url >
</ repository >
Spring Data 遇到问题?我们很乐意提供帮助!
检查参考文档和 Javadocs。
学习 Spring 基础知识 – Spring Data 基于 Spring Framework 构建,请查看 spring.io 网站以获取大量参考文档。如果您刚刚开始使用 Spring,请尝试其中一个指南。
如果您要升级,请查看 Spring Data JPA 发行说明并向下滚动到您正在考虑的版本。请参阅那里的详细信息。 (另请查看最新的稳定版本)
提出问题 - 我们监控 stackoverflow.com 中是否有带有spring-data-jpa
标签的问题。您还可以在 Gitter 上与社区聊天。
在 GitHub 问题跟踪器中报告 Spring Data JPA 的错误。
Spring Data 使用 GitHub 作为问题跟踪系统来记录错误和功能请求。如果您想提出问题,请遵循以下建议:
在记录错误之前,请搜索问题跟踪器以查看是否有人已经报告了该问题。
如果该问题尚不存在,请创建一个新问题。
请在问题报告中提供尽可能多的信息,我们想知道您正在使用的 Spring Data 版本和 JVM 版本、完整的堆栈跟踪以及任何相关的配置信息。
如果您需要粘贴代码,或包含堆栈跟踪,请使用三个反引号将其格式化为代码。
如果可能,尝试创建一个复制问题的测试用例或项目。附上您的代码或包含您的代码的压缩文件的链接。如果可能,请使用内存数据库或使用测试容器设置数据库。
您不需要从源代码构建来使用 Spring Data(repo.spring.io 中的二进制文件),但如果您想尝试最新和最好的,可以使用 Maven 包装器轻松构建 Spring Data。您还需要 JDK 17 或更高版本。
$ ./mvnw clean install
如果您想使用常规mvn
命令进行构建,则需要 Maven v3.8.0 或更高版本。
如果您希望提交拉取请求,另请参阅 CONTRIBUTING.adoc,特别是请在第一次重要更改之前签署贡献者协议。
构建文档也会构建项目,而无需运行测试。
$ ./mvnw clean install -Pantora
生成的文档可从target/antora/site/index.html
获取。
spring.io 站点包含多个指南,演示如何逐步使用 Spring Data:
使用 JPA 访问数据:了解如何使用 Spring Data JPA 处理 JPA 数据持久性。
使用 REST 访问 JPA 数据是创建 REST Web 服务并通过存储库公开使用 JPA 存储的数据的指南。
Spring Data Examples 包含更详细地解释特定功能的示例项目。
Spring Data JPA 是在 Apache 2.0 许可证下发布的开源软件。