【问题标题】:Public Java Swing App connect to database公共 Java Swing 应用程序连接到数据库
【发布时间】:2016-04-15 05:57:16
【问题描述】:

我正在开发一个供公众使用的 Java Swing 应用程序。这个应用程序需要连接一个 mysql 数据库。我应该直接从 Java Swing 应用程序连接到数据库吗?

【问题讨论】:

  • 一般约定建议您有一个“管理器”API 来处理这些类型的事情,它控制您可以做什么以及如何创建表示数据的对象。物理连接到数据库的方式取决于数据库的存储位置。如果它在不同的服务器上,Web 界面/restful API 可能更合适(更不用说更灵活)
  • 感谢您的回答。我也想过一个网络界面。但这不会不必要地减慢速度,因为我现在必须通过 we 接口连接,通过额外的方法调用,例如webservices,在服务器端处理代码?
  • 它会增加开销,但它增加的是一层安全性,因为您限制了人们可以通过 Web 服务执行的操作以及限制可以主动连接到数据库的域(仅来自您的 Web 服务器本身的传入连接)并解耦代码,因此您的客户端不关心使用了什么数据库,只关心 Web 服务维护它的 API 合同
  • 谢谢。关于如何编写 Java Web 服务的任何链接?

标签: java swing jdbc


【解决方案1】:

这取决于您对客户的信任程度。将您的整个数据库暴露给外部网络可能会有风险,因为恶意用户可以轻松地对您的程序进行逆向工程以找出连接到您的数据库的凭据。虽然您可以通过降低数据库的安全性来在一定程度上抵御与此相关的风险,但使用 Java 等通用编程语言编写的适当服务层将更适合于此。并且通过适当的服务 API 来访问您的数据库,您可以为数据库中的数据一致性做出更高的保证。之后,您甚至可以在数据库供应商之间切换,甚至切换到另一种存储方法,如 NoSQL 解决方案,同时保持 Swing 客户端几乎没有变化(假设服务 API 设计得当)。从长远来看,这绝对是值得的。

编辑:跟进回答如何实现这样的网络服务

如果您想最大程度地减少外部依赖,您可以使用纯粹基于 Java 标准的解决方案,例如 JAX-WS。它作为JavaEE 平台的一部分提供,因此,虽然不是绝对必要的,但使用兼容的实现可能是一个好主意,因为它提供了声明性事务、身份验证和授权等服务,以及您可能需要的更多东西。实现和公开您的服务 API。如果您想完全控制后端服务层,Spring Framework 是 JavaEE 的一种流行替代方案,但在学习曲线方面可能需要更多的前期投资。您可以从 Java SE 应用程序连接到 JAX-WS 服务或 Spring Remoting,因此两者都是实现正确 3-tiered architecture 的可行途径。

【讨论】:

  • 谢谢。我不是专业的程序员,所以请原谅我愚蠢的 cmets。 =) 那么,对于一个 Java Swing 应用,我应该如何用 Java 开发一个 Web 服务层呢?
  • 我已经编辑了我的回答,以跟进您的问题。非常好的问题,顺便说一句。 :)
  • 感谢您的回答。请问有没有推荐的主机可以运行我的服务器端java代码?
  • 您是指可以运行 Java 技术的 Platform as a Service 提供程序?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-08
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-21
相关资源
最近更新 更多