This question already has answers here:
What is difference between CrudRepository and JpaRepository interfaces in Spring Data JPA?
(6个答案)
4年前关闭。
我正在开发一个 Spring Boot 应用程序,该应用程序使用 Spring Data JPA (在Hibernate 4上)访问我的数据库。
我的疑问与 DAO 接口(interface)(JPA用于自动生成查询)有关。
因此,在我的项目中,我有以下两个接口(interface):
1)住宿DAO :
2) EventDAO :
它们都可以正常工作,并且使用相同的逻辑来声明查询。
我唯一的疑问是:第一个扩展了 JpaRepository ,而第二个实现了 CrudRepository 。
JpaRepository 和 CrudRepository 有什么区别?最佳选择是什么?在哪种情况下最好选择另一选择?
另一个疑问是:为什么我定义的DAO接口(interface)扩展了本身就是接口(interface)的 JpaRepository 和 CrudRepository ?据我所知,接口(interface)是已实现但未扩展的……我缺少什么? 还有其他一些JPA特定的方法,例如QueryBy Example,批量删除,手动刷新对数据库 的更改,这些方法都支持查询方法返回
如果使用的是JPA,则应使用JpaRepository。
(6个答案)
4年前关闭。
我正在开发一个 Spring Boot 应用程序,该应用程序使用 Spring Data JPA (在Hibernate 4上)访问我的数据库。
我的疑问与 DAO 接口(interface)(JPA用于自动生成查询)有关。
因此,在我的项目中,我有以下两个接口(interface):
1)住宿DAO :
@Repository
@Transactional(propagation = Propagation.MANDATORY)
public interface AccomodationDAO extends JpaRepository<Accomodation, Long> {
Accomodation findById(@Param("id") Long id);
}
2) EventDAO :
public interface EventDAO extends CrudRepository<Event, Integer> {
public Event findByLocation(Point location);
public Event findById(@Param("id") Integer id);
}
它们都可以正常工作,并且使用相同的逻辑来声明查询。
我唯一的疑问是:第一个扩展了 JpaRepository ,而第二个实现了 CrudRepository 。
JpaRepository 和 CrudRepository 有什么区别?最佳选择是什么?在哪种情况下最好选择另一选择?
另一个疑问是:为什么我定义的DAO接口(interface)扩展了本身就是接口(interface)的 JpaRepository 和 CrudRepository ?据我所知,接口(interface)是已实现但未扩展的……我缺少什么?
最佳答案
请注意,JpaRepository扩展了CrudRepository。比较这两个接口(interface)的JavaDoc:
JpaRepository 与 CrudRepository
简而言之JpaRepository
List
而不是Iterable
的如果使用的是JPA,则应使用JpaRepository。
10-06 13:05