5

我有一个设计/架构问题:

我已经开始开发一个 java web 应用程序。我想过使用 3 层:持久层(使用 jpa 和 hibernate)、业务层和表示层。我现在的问题是:jpa 实体会制作模型,但我可以或可以将实体用作业务对象吗?

这是一种做法吗?我的常识说我不应该,但是,我需要将这些实体复制为业务对象?

最后,我希望表示层与其他层真正分离。在最初使用带有jsp的spring mvc时,我想。如果合适,在某个时候切换到基于 javascript 的应用程序,该应用程序通过休息请求与后端进行通信。

4

1 回答 1

2

是的你可以。在持久化上下文之外,JPA 实体就像简单的 POJO。在业务代码中使用它们是合法的(实际上,正如 JB Nizet 所暗示的,您通常总是在没有 DAO 的情况下在业务层中使用它们)。如果它与实体紧密相关,您甚至可以将业务逻辑添加到您的 JPA bean 中。然而,阅读和理解代码的作用将更加困难。但是,如果您有理由这样做 - 没有什么是违法的。这一切都归结为软件设计实践和您最需要的东西。

当您想将您的应用程序更改为基于 REST 的服务时,这并不难。您必须更改当前运行应用程序的 Servlet,以换取一个JAX-RS或其他框架Servlet,该框架将以您的方式处理HTTP请求REST。它是在web.xml. 然后,您将把您的 html 页面放在远程主机可以访问的任何地方,并使用 Javascript AJAX 或某事将它们连接到您的 REST 服务。那么你应该照顾好CORS。

于 2013-11-12T11:22:52.130 回答