3 回答
TA贡献1856条经验 获得超17个赞
我认为您误解了 a 的Service
真正含义。
AService
是处理业务逻辑的点。它的方法应该代表业务操作,而不仅仅是数据检索/持久化的方法。
简单地拥有所有JpaRepository
方法并委托给 aRepository
是大量代码重复的秘诀,您应该避免这种情况。
Service
根据您的业务需求构建您的。
如果您觉得不需要 Service 中间件,可能是因为您只获取/设置数据,只需Autowire
在.Repository
Controller
使用Repository
内部 aController
是错误的并不总是正确的。这取决于。
TA贡献1827条经验 获得超7个赞
如果我正确理解了这个问题。首先将存储库创建为扩展 JpaRepository 或其他接口的接口,并且不要忘记使用@Repository 注释您的接口。然后创建您的服务并将您的存储库注入它,这样您就可以在服务中创建自己的方法(可以使用任何名称)。然后您可以将服务注入您的控制器。该技术主要使用。
TA贡献1906条经验 获得超10个赞
您不需要将方法复制Repository到任何服务。Spring Data JPA 提供了许多强大的功能来编写自定义查询。
假设您有UserRepository一个名为的域User并希望通过他/她的电子邮件地址找到用户。findByEmail不要在扩展的单独服务中创建方法,只需在接口UserRepository内声明它:UserRepository
User findByEmail(String email);
然后,Spring Data JPA 将为您完成所有繁琐的工作。UserRepository您可以通过在Controller(或其他类)中注入来调用此方法。
以上只是一个简单的例子。您甚至可以声明具有多个条件的查询:
User findByEmailOrUsername(String email, String username);
User findByEmailAndActiveTrue(String email);
List<User> findTop10ByEmail();
我建议您探索 Spring Data JPA 的官方文档。通过编写几行代码,您可以做很多事情。
添加回答
举报