在开发Java EE应用程序时,如何分离业务逻辑以便可以重用它?
我继承了一个主要是模型1的应用程序。业务逻辑位于JSP,Servlet和DAO代码中。
我想分离业务逻辑,但我对所有存在的框架等感到困惑。
我正在研究使用JPA的Hibernate来处理所有数据库持久性。目前,所有SQL都是手动编码的,并且单独的SQL用于不同的RDBMS。我的DAO将调用持久性所需的代码。
我正在考虑将Struts用于我的Web层。我不理解的部分是商业逻辑。
我不希望我的逻辑绑定到Web层,因为我想在Java SE应用程序中重用逻辑。
我考虑过将业务逻辑放在实体类中,但这似乎是一个坏主意。
是否有某些技术或模式可用作创建可重用业务逻辑的指南?
如果我不清楚,我会编辑。
谢谢。
答案 0 :(得分:2)
要将您的前端代码(视图)与您的业务逻辑(控制器)和数据(模型)分开,您可以关注MVC pattern。
您可以让控制器访问包含将在Java SE应用程序中使用的可重用业务逻辑的其他类。
有很多框架可以帮助您以这种风格构建Web应用程序,如Grails(使用Groovy),Play或Roo。但是因为你说'企业',你应该看一下Spring framework及其MVC模块。 Spring提供了与Hibernate的良好集成,并允许您通过Web应用程序遵循MVC模式。
答案 1 :(得分:0)
我会说吃点东西。首先解决最大的问题,在您的情况下,在jsp页面中具有业务逻辑。您可以使用您选择的任何Web MVC框架来完成此任务(Struts,Spring MVC,Grails都很好。选择一个您最熟悉的)。
下一个问题是在您的控制器可以调用的单独模型层中组织业务逻辑。 Spring是一个很好的DI框架,用于组织和引导您的应用程序。此外,Spring支持许多Web MVC框架,包括Struts,JSF等。
最后一个问题是你的Dao层。你提到你想使用Hibernate / JPA。我不知道你对Hibernate有多熟悉,但确保你试图通过切换到Hibernate来解决实际问题(因为切换到Hibernate通常需要付出巨大的代价和麻烦)。