从Spring Data JPA文档页面:
Spring Data JPA为Java Persistence API(JPA)提供存储库支持。它简化了需要访问JPA数据源的应用程序的开发。
我了解什么是JPA API,并且已经与Hibernate合作。我了解JPA为ORM库提供了有关如何将Java对象映射到RDBMS表中的记录的规范。
但是我无法理解这里的“存储库支持”是什么意思。 JPA数据源到底是什么? JPA并不是ORM库可以实现的规范,而数据源可能是RDBMS数据库之类的东西?
答案 0 :(得分:1)
JPA数据源到底是什么? JPA不是ORM的规范吗 库可以实现,而数据源可能类似于 RDBMS数据库?
并非如此,JPA数据源是一个JPA概念。
您有两种:JTA datasources and no JTA datasources。
第一个通常由Java EE服务器(JBoss,Weblogic ...)提供。
如果使用Spring Boot提供的轻量级容器(Tomcat,Jetty等),则默认情况下,您将不会依赖JTA,因此将使用no JTA datasource。
JPA实现(Hibernate,EclipseLink等)提供了对两种数据源模式的支持。
但是我无法理解这里的“存储库支持” 手段。
Spring Data存储库是一个非常广泛的概念,具有许多功能,但是我们可以将其概括为the doc状态:
Spring数据存储库抽象的目标是显着地 减少实现数据所需的样板代码数量 各种持久性存储的访问层。
存储库源自DDD方法。您可以找到其用途及其使用方法的摘要here。
在春季,存储库具有多种口味。
我通常使用:
最后,存储库还受益于从存储库接口中的声明方法自动创建的方法。
这是文档中的一个简单示例:
import org.springframework.data.repository.*;
interface UserRepository extends CrudRepository<User, Long> {
long deleteByLastname(String lastname);
List<User> removeByLastname(String lastname);
}
仅使用此简单代码和正确的Spring配置,在启动Spring容器时,将实例化一个userRepository
bean,并实现所有实现的crud方法(在CrudRepository
中声明的方法)和{{1} }和deleteByLastname()
在查询实现中将具有生成的主体,该主体将执行其命名,其参数和其返回类型暴露的内容(一定要遵守某些约定)。
您可以这样使用Bean,例如:
removeByLastname()