我正在开发一个简单的问答服务(Jersey JAX-RS)。通过这项服务,到目前为止,我已经提出了以下资源(可能会增加)。
- GET|POST -------------/问题
- 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。但是,对于我应该放置哪些服务和存储库来处理最后五个请求的方法,我有点困惑。我应该把它们都放到问题服务和存储库还是另一个类 - 回答服务和存储库?
由于答案和问题的多对一关系,我正在考虑后者(JPQL NamedQuery - SELECT a FROM Answer a WHERE a.question.id = :questionId)。这意味着我的 QuestionResource 中除了 QuestionService 之外,我还会有 AnswerService。这样可以吗。
请赐教。谢谢你。