我有一个Java Web应用程序,它具有一个“断开连接”的Java Swing桌面应用程序。使用桌面应用程序用户连接到互联网并从服务器下载他们需要的数据。他们可以断开连接并脱机使用应用程序。当他们重新连接到互联网时,他们可以将他们的数据同步回服务器。什么是分离可以在线和离线使用的应用程序层的好策略?
服务器本身是一个Java EE Web应用程序,桌面应用程序是Web应用程序的有限功能版本。到目前为止,所有业务逻辑和数据访问代码都是针对每个应用程序单独编码的每个应用程序的数据存储都不相同(Web是SQL Server,桌面是Serialized对象)。一些新的要求涉及到两个应用程序的大量开发。由于功能相同,因此我希望对数据访问代码和业务逻辑进行分层,以便我可以轻松地在两个应用程序中重复使用它。
我的计划是要做到以下几点。
1)创建一个DAO库(JPA)
交换机我的DAO(目前JDBC)使用Java持久性API。这样,我可以开始在桌面应用程序上使用RDBMS,如derby,sql express或类似的东西,并重新使用entites和DAO代码来完成所有数据库操作。我可以将它捆绑到一个类库中,并为Web和桌面使用相同的库。
2)创建的POJO中实现业务逻辑
的Web应用程序是用支柱2.我将采取所有的逻辑在我的Action类图书馆,但它。用业务逻辑创建一个jar类库。我可以将这个lib添加到我的web和桌面项目中。然后我可以从我的struts动作和桌面应用程序调用POJO。
我假设JPA将负责复制数据访问代码,并将业务逻辑(大部分是dao调用)放在单独的库中,将负责复制业务逻辑。
所以我的问题是:什么是一个好的策略分离图层可以在线和离线使用的应用程序?
如果您有任何关于实现这一点的建议,请在我开始此项目或任何可能帮助我的框架时通知我。
只是为了澄清,当你直接从服务层说你的意思,而不是从[Web - >服务 - > Dao - > DB]调用时,我使用[Web服务 - > DB] – Allan 2010-08-13 11:34:52
@alzoid:我的意思是[Web - > Service - > EntityManager]而不是[Web - > Service - > DAO(EntityManager)]# – 2010-08-13 11:56:21
#1:是的,但是如何测试何时注入没有挂钩? – 2012-07-16 16:59:22