我正在开发一个公众使用的Java Swing应用程序。这个应用程序需要连接一个mysql数据库。我应该直接从Java Swing应用程序连接到数据库吗?
答案 0 :(得分:2)
这取决于您对客户的信任程度。将整个数据库暴露给外部网络可能会有风险,因为恶意用户可以轻松地对程序进行反向工程,以找出连接到数据库的凭据。虽然您可以通过将安全性降低到数据库来在一定程度上防御与此相关的风险,但是使用通用编程语言(如Java)编写的适当服务层将更适合这一点。使用适当的服务API来访问您的数据库,您可以为数据库中的数据一致性提供更高的保证。之后,您甚至可以在数据库供应商之间切换,甚至可以切换到NoSQL解决方案等其他存储方法,同时保持Swing客户端几乎不变(给定设计合理的服务API)。从长远来看,这绝对是值得的。
编辑:关于如何实施此类网络服务的跟进答案
如果要最小化外部依赖性,可以使用纯粹基于Java标准的解决方案,例如JAX-WS。它作为JavaEE平台的一部分提供,因此,虽然不是绝对必要,但使用兼容的实现可能是个好主意,因为它提供声明式事务,身份验证和授权等服务。 ,以及在实现和公开服务API时可能需要的更多内容。如果您希望完全控制后端服务层,Spring Framework是JavaEE的流行替代方案,但在学习曲线方面可能需要更多的前期投资。您可以从Java SE应用程序连接到JAX-WS服务或Spring Remoting,因此两者都可以成为实现正确3-tiered architecture的可行途径。