分布式 Java 桌面应用程序 mySQL 数据库

Posted

技术标签:

【中文标题】分布式 Java 桌面应用程序 mySQL 数据库【英文标题】:Distributed Java desktop app mySQL database 【发布时间】:2015-09-26 21:52:38 【问题描述】:

我目前正在学习 Java 和 Swing,并且正在尝试创建一个桌面应用程序。 作为这个应用程序的一部分,我已经设置了一个应用程序连接到的 mysql 数据库,但是我不确定如果我要为其他用户分发应用程序,这将如何工作,我将如何创建他们的数据库如果他们没有安装 mySQL 或未启动数据库,则可以在他们的系统上使用。 我们将不胜感激。

【问题讨论】:

【参考方案1】:

您应该使用嵌入式数据库。我不建议将 MySQL 用于商业应用程序,因为它非常昂贵。尝试使用 HSQLDB - 非常快并且没有内存泄漏(至少我没有注意到)。

这是一个实现示例:

private static Connection conn;

/**
 * Gets database connection.
 *
 * @return the database connection.
 * @throws SQLException if database error occurs.
 */
public static Connection getConnection() throws SQLException 

    if (conn == null || conn.isClosed()) 
        conn = DriverManager.getConnection("jdbc:hsqldb:file:data", "somedb", "");
        // conn.setAutoCommit(false);
    
    return conn;

确保您已将 hsqldb.jar 文件添加到您的库中。

【讨论】:

你的意思是Enterprise Edition by 用于商业应用程序的MySQL 我在某个地方参与了关于将 MySQL 用于商业应用程序的讨论——发现对于小型项目来说太贵了。所以切换到 HSQLDB - 这很棒。还尝试了 JavaDB/Derby - 但经历了内存泄漏。目前不确定 MySQL 许可,您应该检查自己。 有免费的Community Edition。那怎么可能太贵 您的意思是Community Edition 可以用于商业应用吗?在这种情况下,我认为这也很棒。 ***.com/q/1921437/1700321 和 xaprb.com/blog/2009/02/17/…。【参考方案2】:

我建议查看 SQLite 而不是 mySQL。听起来您需要一个不需要服务器来运行的独立数据库。我已经完成了 Java(和 android)、Swing 以及 C#。我发现 SQLite 是在不同平台上拥有数据库而不安装服务器的最佳解决方案。

【讨论】:

从我目前使用的 mySQL 转换为 SQLite 会不会很简单? 我发现它非常简单,尽管与其他任何东西一样有一个学习曲线。 无论如何,我们还成功地将 SqlLite 与 Borland Delphi(现在的 Embarcadero XE)一起使用。该产品是一个分布式保龄球应用程序。主数据库是 SQL Server。但是每对通道都有一个 SQLLite 数据库来维护名称和分数的本地备份(以防与 MSQL 的连接中断)。【参考方案3】:

您有三个选择:

    每个桌面都有自己的私有数据库。

    每个桌面都与一个远程数据库服务器通信。

    每个桌面都与远程数据库服务器的 Web 前端通信。

“选项 3”是最常见的情况。一种选择是“网络应用程序”(在这种情况下,您根本不需要“Swing 桌面”应用程序)。另一种选择是“厚客户端 Java 小程序”。您可以使用 Swing,大部分处理将在本地进行……但您的 Swing 小程序将与远程数据库通信以进行数据库访问。您可以考虑使用REST 接口。

如果您真的想要选项 1(应用程序和数据库完全位于桌面本地),那么我肯定会选择 embedded database。 Sqlite 是一个很好的选择。事实上,Android 使用的是 Sqlite。 HSQLDB 甚至 MS-Access 也是不错的选择。

【讨论】:

我追求的是选项 1,每个用户都有自己的私有且唯一的数据库【参考方案4】:

关于您的问题,我想问一下您是否在应用程序的用户之间共享数据库信息。我的意思是,如果您需要将数据集中在一个数据库中,用户可以通过桌面 Swing 应用程序访问。

如果是这样,那么您将需要另一个应用程序来提供存储在数据库中的信息(此时您可以使用 Web 服务),那么您只需要实现 Web 服务客户端代码即可与之交互通过 Swing 应用程序访问您的数据库。

现在,如果您想要每个用户拥有一个数据库的独立应用程序。然后您可以选择多种选择,例如:

SQL Lite H2 Database Engine Apache Derby HSQLDB

希望这可以为您提供所需实施的方向。

编码愉快。

【讨论】:

以上是关于分布式 Java 桌面应用程序 mySQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

是否可以通过Servlet或类似方法将Java桌面应用程序与MySQL连接起来?

HSQLDB for java 桌面应用都有哪些限制?

zabbix监控nginx监控mysql数据库监控java应用Zabbix + proxy分布式

从远程系统上传 MySQL 数据库并访问 Java 应用程序

java分布式架构搭建

java培训都讲啥东西