使用Spring Data JPA,JpaRepository和CrudRepository之间究竟有什么区别?

参见英文答案 > What is difference between CrudRepository and JpaRepository interfaces in Spring Data JPA?                                    3个
我正在开发一个Spring Boot应用程序,它使用Spring Data JPA(在Hibernate 4上)来访问我的数据库.

我的疑问与DAO接口有关(JPA用它来自动生成查询).

所以,在我的项目中,我有这两个接口:

1)住宿DAO:

@Repository
@Transactional(propagation = Propagation.MANDATORY)
public interface AccomodationDAO extends JpaRepository

2)EventDAO:

public interface EventDAO extends CrudRepository

它们都工作正常并使用相同的逻辑来声明查询.

我唯一的疑问是:第一个扩展JpaRepository而第二个实现CrudRepository.

JpaRepository和CrudRepository之间究竟有什么区别?什么是最好的选择使用或在什么情况下更好地使用一个而不是另一个选择?

另一个疑问是:为什么我定义的DAO接口扩展了JpaRepository和CrudRepository本身就是接口?据我所知,接口是实现的而不是扩展的…我缺少什么?

最佳答案
请注意,JpaRepository扩展了CrudRepository.比较这两个接口的JavaDoc:

JpaRepository vs CrudRepository

简而言之,JpaRepository

>具有支持例如Query
By Example
的其他JPA特定方法,批量删除,手动刷新对数据库的更改
>查询方法返回List而不是Iterable

如果您使用的是JPA,则应使用JpaRepository.

相关文章

这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原...
今天小编给大家分享的是一文解析spring中事务的传播机制,相...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓...