关于如何连接需要从数据库读写的Desktop Java应用程序,我遇到了设计问题。两种方法中哪一种更好?
通过网络使用JDBC驱动程序将Desktop Java应用程序直接连接到数据库。这是一个非常糟糕的主意,因为如果安全,但直接编写SQL查询并执行它们将非常容易。
将Java Desktop应用程序连接到将连接到数据库的应用程序服务器。在这种情况下,我将如何进行SQL查询?我需要某种隧道,用于传输查询并返回输出。这种方法非常安全,但响应时间会很长。
你能告诉我还有其他解决方案吗?
答案 0 :(得分:3)
最好的选择是使用EJB Server。
使用所有crud方法创建EJB Inteface(保存,删除,更新等)。
在服务器上创建EJB实现(Jboss / GlassFish)。
服务器启动并运行后,只需将Interface Jar文件复制到您的应用程序(Java Swing App),然后使用JNDI即可调用所有crud操作。
〜我希望有所帮助。
答案 1 :(得分:2)
有很多方法可以解决这个问题。如果不了解您的应用程序及其要求,就不可能推荐其中一个。
想到的方法是例如EJB,SOAP,REST,JDBC / JPA / Hibernate,RMI。
答案 2 :(得分:1)
另一个选择是在应用程序服务器上托管具有所有CRUD操作的Web服务。这使得它在客户端实现方面更具可移植性。
答案 3 :(得分:1)
我完全同意,一个公共数据库被黑客入侵!但为什么它必须是一个应用服务器?你的应用程序的轻量级服务器组件也可以做到这一点?你甚至可以通过网络发送对象(ObjectOutputStream)
我已经做了与我描述的相同的事情,工作非常精细,并且非常简单,因为我使用反射与泛型一起执行正确的查询。
答案 4 :(得分:1)
您的应用程序服务器正在公开DataSources,它可以为您提供Connection对象(更多信息:http://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html)。您的应用和数据库之间的连接将是直接的,因此不会对性能产生影响。
答案 5 :(得分:1)
执行SQL查询的责任应仅提供给应用程序服务器。应将所有智能传输到应用程序服务器。
如前面的答案中所述,这可以通过使用EJB,web services来完成(性能应该稍微低一点,但这样你就可以与任何其他系统进行交互,即使是使用网络客户端) RMI
请同时考虑Spring给出的解决方案。