2

我有一个关于如何连接需要从数据库读取和写入的桌面 Java 应用程序的设计问题。这两种方法中哪一种更好?

  1. 使用 JDBC 驱动程序通过网络将桌面 Java 应用程序直接连接到数据库。这是一个非常糟糕的主意,因为如果安全但直接编写 SQL 查询并执行它们将非常容易。

  2. 将 Java 桌面应用程序连接到将连接到数据库的应用程序服务器。在这种情况下,我将如何进行 SQL 查询?我需要某种隧道来传输查询并返回输出。这种方法非常安全,但响应时间会很大。

您能告诉我还有其他解决方案吗?

4

6 回答 6

3

最好的选择是使用 EJB 服务器。

使用所有 crud 方法(保存、删除、更新等)创建一个 EJB 接口。

在服务器(Jboss/GlassFish)上创建一个 EJB 实现。

服务器启动并运行后,只需将 Interface Jar 文件复制到您的应用程序(java Swing App)并使用 JNDI,您就可以调用所有的 crud 操作。

〜我希望这会有所帮助。

于 2013-05-14T10:10:30.890 回答
2

有很多方法可以解决这个问题。在不了解您的应用程序及其要求的情况下,不可能推荐其中一个。

想到的方法有 EJB、SOAP、REST、JDBC/JPA/Hibernate、RMI。

于 2013-05-14T10:14:41.197 回答
1

另一种选择是在应用程序服务器上托管一个具有所有 CRUD 操作的 Web 服务。这使得它在客户端实现方面更具可移植性。

于 2013-05-14T10:12:11.127 回答
1

我完全同意,一个公共数据库被黑客入侵了!但为什么它必须是应用程序服务器?您的应用程序的轻量级服务器组件也可以解决问题吗?你甚至可以通过网络发送对象(ObjectOutputStream)

我已经做了与我描述的相同的事情,工作得非常好,而且超级简单,因为我将反射与泛型结合使用来执行正确的查询。

于 2013-05-14T10:12:32.090 回答
1

您的应用程序服务器正在公开可以为您提供 Connection 对象的 DataSources(更多信息:http ://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html )。您的应用程序和数据库之间的连接将是直接的,因此不会影响性能。

于 2013-05-14T10:15:14.323 回答
1

执行 SQL 查询的责任应该只交给应用程序服务器。所有的智能都应该转移到应用服务器。

如前面的答案所述,这可以通过使用EJBWeb 服务(性能应该稍微低一些,但这样您可以与任何其他系统交互,甚至使用 Web 客户端)和RMI来完成。

另请考虑Spring给出的解决方案。

于 2013-05-14T10:24:33.230 回答