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