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