我有设计/架构问题:
我已经开始开发一个java Web应用程序了。我想过使用3层:持久层(使用jpa和hibernate),业务层和表示层。我现在的问题是: jpa实体会制作模型,但我可以或者可以将实体用作业务对象吗?
这是一种做法吗?我的常识说我不应该,但是,我需要将这些实体复制为业务对象吗?
最后,我希望表示层真正与其他层分离。虽然我最初使用带有jsp的spring mvc,但我还是喜欢。如果它适合,在某个时刻切换到基于javascript的应用程序,通过休息请求与后端通信。
答案 0 :(得分:2)
是的,你可以。在持久化上下文之外,JPA实体就像简单的POJO。在商业代码中使用它们是合法的(实际上,正如JB Nizet所暗示的那样,您通常总是在没有DAO的业务层中使用它们)。如果它与实体紧密相关,您甚至可以将业务逻辑添加到JPA bean中。然而,阅读和理解代码的作用将更加困难。但如果你有理由这样做 - 没有什么是非法的。这一切都归结为软件设计实践以及您最需要的。
当您想要将应用程序更改为基于REST的服务时,并不困难。您必须更改当前运行应用的Servlet,其中包含JAX-RS
或其他框架Servlet
,它将以HTTP
方式处理REST
个请求。它在web.xml
中完成。然后,您将把html页面放在任何可以访问远程主机的地方,并使用Javascript AJAX或sth将它们连接到您的REST服务。那你应该照顾CORS。