我正在开发一个桌面Java应用程序,该应用程序应该通过代理连接到Oracle数据库,该代理可以是Servlet或EJB或您可以建议的其他内容。
我的问题是应该使用什么架构?
简单Servlet作为客户端和数据库之间的代理,连接到数据库并将结果发送回客户端。
具有EJB和远程接口的企业应用程序,用于访问数据库
我没有想到的任何其他选项。
由于
答案 0 :(得分:1)
根据您希望解决方案的可扩展性,您可以做出选择。
EJB(3)可以做出不错的选择但是你需要一个完整的应用服务器。
您可以直接使用jdbc进行连接,但这会暴露db的url(在每个客户端桌面应用程序中公开将与DB建立连接。您无法汇集,并且失去了很多灵活性)。除非你的应用程序真的很简单,否则我不建议你走这条路。
您可以创建一个servlet来充当代理,但它的繁琐且不具备可扩展性。您必须在两端编写大量代码
我建议创建一个基于REST的服务,在数据库上执行所需的操作,并在桌面应用程序中使用它。
答案 1 :(得分:1)
开始简单。我将从一个简单的基于servlet / JDBC的解决方案开始,让系统端到端地工作。从那时起,考虑:
如果您决定采用这种方法,请确保您的架构分层良好,这样您就可以换掉(比如说)原始JDBC以支持ORM,并且您的开发是测试驱动的,这样您就拥有了足够的测试用例,以确保您的解决方案在您执行上述迁移时有效。
请注意,您永远不会最终确定解决方案。随着您的要求发生变化,您的应用程序可以扩展,您可能希望交换/输出最适合您当前要求的技术。因此,应用程序的体系结构比您选择的特定工具集更重要。
答案 2 :(得分:0)
通过某些ORM直接使用JDBC(例如Hibernate)?
如果您正在开发独立应用程序,请更好地保持简单。为了使用ORM或其他框架,您不需要J2EE App Server(以及它所带来的所有复杂性)。
如果需要在数据库和应用程序之间交换大量数据,只需忘记EJB,Servlet和Web服务,只需使用Hibernate(或直接使用普通的旧JDBC)。
基于REST的Web服务解决方案可能会很好,只要您没有复杂数据和高数字(尝试分析实际解组SOAP消息和java对象需要多长时间)。
答案 3 :(得分:0)
使用Spring-remoting和基于servlet的方法取得了很大的成功。这也是一个很好的开发设置,因为您可以轻松测试代码而无需部署到Web容器。
我发现通过将服务作为应用程序的一部分运行来轻松开发代码的能力比开发/调试服务器上运行的东西更具优势。我在使用和不使用EJB时都使用过这种方法,尽管在我们的特定情况下仍然通过servlet访问EJB。只有服务调用服务直接使用EJB(也使用Spring远程处理)。