泽西服务和持久层

时间:2017-08-13 06:04:11

标签: java rest jersey service-layer data-layer

我正在开发一个简单的问答服务(Jersey JAX-RS)。有了这项服务,到目前为止我已经提出了以下资源(可能会增加)。

  • GET | POST ------------- / questions
  • GET | PUT | DELETE - / questions / {id}
  • GET | POST ------------ / questions / {id} / answers
  • GET | PUT | DELETE - / questions / {questionId} / answers / {answerId}

这是我的资源类,适合所有上述路径。

@Path("/questions")
public class QuestionResource {
    @Inject
    private QuestionService questionService;

    @GET
    ...<list of questions>

    @POST
    ...<a new question>

    @Path("{id}")
    ...<a question>

    @PUT    
    @Path("{id}")
    ...<update a question>

    @DELETE
    @Path("{id}")
    ...<delete a question>

    @GET
    @Path("{id}/answers")
    ...<list of answers>

    @POST
    @Path("{id}/answers")
    ...<a new answer for a question>

    @GET
    @Path("{questionId}/answers/{answerId}")
    ...<an answer for a question>

    @PUT
    @Path("{questionId}/answers/{answerId}")
    ...<update an answer for a question>

    @DELETE
    @Path("{questionId}/answers/{answerId}")
    ...<delete an answer for a question>
}

这有相应的服务和持久层 - QuestionService / QuestionServiceImpl和QuestionRepository / QuestionRepositoryImpl。但是,我有点担心哪个服务和reposipotory我应该调用处理最后五个请求的方法。我是否应该将它们全部放入问题服务和存储库或另一个classess - 应答服务和存储库?

我正在考虑后者,因为答案和问题的多对一关系(JPQL NamedQuery - SELECT a FROM Answer a WHERE a.question.id =:questionId)。这意味着除了QuestionResource中的QuestionService,我还会有AnswerService。那会没事的。

请赐教。谢谢。

1 个答案:

答案 0 :(得分:1)

  • 在restful API中,一切都是资源,当涉及到时 您认为是主要资源和其他资源的关系 另一个词是资源和子资源。

  • 在您的情况下答案是子资源,因为您的答案资源无法成为主要资源 另一个词,你的一个资源取决于另一个 一。绝对你的答案取决于问题