编写JPA存储库时应使用哪些实践

时间:2019-10-18 17:52:46

标签: java spring

我正在编写一个Spring Rest应用程序,问题是我不确定何时应该使用repository还是将service接口与其中的implementation一起使用。假设我有一个具有方法findById的存储库,我创建了一个服务接口,该接口具有与返回对象相同的方法,并称为Object findById(Long id);,我想知道是否应该创建该方法的实现看起来像这样

public Object findById(Long id) {
    repository.findById(id).orElseThrow(() -> new RuntimeException("message"));
}

但是如果没有此服务类,我也可以做同样的事情,因为存储库还返回了Optional,所以它也可以在控制器中完成

repository.findById(id).orElseThrow(() -> new RuntimeException("message"));

但是很难测试存储库,更好的方法是创建服务的实现,然后测试服务。无论如何,您对此有何看法,哪一种对您更好,为什么?

1 个答案:

答案 0 :(得分:-1)

我认为这全都与您的项目架构有关。 N-Layer体系结构是最经典,最简单和最喜欢的体系结构之一,通常由3个主要层实现。 ControllersServicesRepositories

Controllers负责从客户端获取请求,通常通过调用Services来更新模型并为客户端返回响应。

Services是实现业务逻辑的地方,通常应在其中检查事务管理和一些安全性检查等。

最后是Repositories,您可以在其中与File SystemDatabase之类的基础系统进行交互,以保存应用程序的状态。