我正在尝试开发一些RESTful Web服务,这些服务必须访问一些后端数据系统。这些后端源可以是以下任何一个:
数据库通过JDBC
ERP,通过SOAP进行沟通
另一个J2EE应用程序,通过SOAP或REST进行通信。
在我的关卡中,如果我的业务层和DAO之间存在松耦合,我能做什么?是否有一些设计模式可以帮助我?
非常感谢你的帮助!!
答案 0 :(得分:2)
希望这会有所帮助:
Layer your system:正如您在答案中提到的那样,始终从数据访问逻辑中分离出bz逻辑。我建议在不同的二进制模块中实现不同的层,这样可以灵活地在不同的层中部署不同的层(如果你真的需要它)。
Repository pattern:业务层具有如何使用bz逻辑中的某些实体执行数据访问操作的抽象定义。存储库中的方法始终使用bz逻辑中定义的实体作为参数(存储库始终在bz语言中“通话”)。一旦在bz层中定义了存储库接口,就可以在单独的层中实现它们:数据访问层。
Dependency injection:在应用程序层(GUI,应用程序服务器......)中,在初始化逻辑(bootstrapping)中,您可以使用依赖性容器来注入存储库实现(在bz逻辑中的数据访问层)。有很多带有依赖注入容器的开源框架。
使用这3种模式,您可以将DA逻辑与bz逻辑分开。
请注意,这是一个非常简短的答案,我建议您花一些时间阅读以下书籍:
谢谢,
Juanjo
答案 1 :(得分:0)
我希望我能正确理解你的问题。
我正在开发一个使用JAX-WS RESTful Web服务来访问数据的应用程序。数据可以来自各种不同的来源(在我们的案例中有两个不同的数据库和Lucene索引)。
我认为,在不了解您的具体情况的情况下,我只能推荐我们使用的典型方法:
虽然这是一本旧书,但大部分信息都在Expert One-on-One J2EE Design and Development中。但我会说这些是标准的Enterprise Java最佳实践。