Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java,MySQL:有没有办法将MySQL服务器嵌入Java程序?_Java_Mysql_Embedded Database - Fatal编程技术网

Java,MySQL:有没有办法将MySQL服务器嵌入Java程序?

Java,MySQL:有没有办法将MySQL服务器嵌入Java程序?,java,mysql,embedded-database,Java,Mysql,Embedded Database,我喜欢.NET的一点是它能够在项目中同时拥有一个数据库文件。我知道使用SQLite数据库可以做到这一点,但有人用MySQL数据库后端做到了吗 例如,如果我运行一个java程序,它应该能够启动自己的迷你MySQL服务器并操作数据。因此,本质上,我想要与SQLite相同的流程,但我需要MySQL的强大功能。快速搜索显示:MySQL连接器/MXJ-用于在MySQL下载页面上的Java应用程序中嵌入MySQL服务器,网址为: 听起来你想要一个嵌入式数据库。虽然MySQL连接器看起来不错,但它将启动一个单

我喜欢.NET的一点是它能够在项目中同时拥有一个数据库文件。我知道使用SQLite数据库可以做到这一点,但有人用MySQL数据库后端做到了吗


例如,如果我运行一个java程序,它应该能够启动自己的迷你MySQL服务器并操作数据。因此,本质上,我想要与SQLite相同的流程,但我需要MySQL的强大功能。

快速搜索显示:MySQL连接器/MXJ-用于在MySQL下载页面上的Java应用程序中嵌入MySQL服务器,网址为:


听起来你想要一个嵌入式数据库。虽然MySQL连接器看起来不错,但它将启动一个单独的服务器进程。如果您希望数据库服务器在Java虚拟机中运行,那么有几个用于Java的嵌入式数据库

我见过的两个使用最多的是:

  • /

  • 如果您不介意使用MariaDB(mysql的开源变体,基本上工作原理相同),mysql人员提供的一个实用工具可以实现这一点,以供将来任何希望嵌入mysql的人参考

    MariaDB4j是MariaDB的Java(!)“启动器”(backward) 兼容,替换MySQL(R)数据库服务器”,请参阅 FAQ和Wikipedia),允许您从Java使用MariaDB(MySQL(R)) 没有任何安装/外部依赖关系。再读一遍:你知道 不必在系统上安装MariaDB二进制文件即可使用 玛丽亚杰

    由于它完全可以在用户的pc上运行,因此它可能是嵌入MySQL的最佳选择。将不使用嵌入式数据库的项目转换为MariaDB4j与调用以下命令一样简单:

    DB db = DB.newEmbeddedDB(3306);
    
    Maven中心依赖项是:

    <dependency>
        <groupId>ch.vorburger.mariaDB4j</groupId>
        <artifactId>mariaDB4j</artifactId>
        <version>2.2.3</version>
    </dependency>
    
    如果你不介意使用MariaDB,另一个选择是

    是一个库,提供了在集成测试中运行真实MySql的方法

    为什么?

    • 您的测试可以在类似产品的环境中运行:匹配版本、编码、时区、数据库/架构/用户设置
    • 它很简单,比手动安装正确的版本容易得多
    • 每个项目可以使用不同的版本/配置,无需任何本地设置
    • 支持多种平台:Windows、Linux和OSX
    • 提供不断更新的多个MySql版本-5.5、5.6、5.7、8.0
    • 所有受支持操作系统(x86/x64)和版本(5.5、5.6、5.7、8.0)的测试矩阵

    ApacheDerby(JavaDB)非常容易嵌入到java应用程序中,并且工作得非常好。谢谢。。我会调查的。我目前有很多使用MySQL的脚本。您知道将JavaDB转换为MySQL数据库是否足够简单吗?就这一点而言,HSQLDB也很简单。但问题是关于MySQL:)不要忘记伟大的H2数据库!现在2018年有一些完美的选择。查看我的答案,了解更多关于这些的信息。我曾经有过依靠HSQL测试使用Oracle的生产系统的糟糕经历。行为上的差异会导致特定于测试的黑客行为,或者更糟的是,由于太麻烦,从未编写过测试用例。我认为创建一个尽可能接近真实的测试环境比任何事情都重要。使用一些额外的系统资源通常是一个可以接受的折衷方案。对于任何在给出答案很久之后阅读此答案的人来说,MXJ在MySQL版本5.1.40、Connector/J版本5.0.11停止了开发。请参阅@PeterDolberg在JUnit测试时是否有实现MySQL(嵌入式)运行的替代包?@Constructor检查我的答案。Wix Embedded MySQL可能是您的解决方案。请注意,MySQL Connector/MXJ的开发已经停止。有什么替代方案?有没有可以免费嵌入的解决方案?嗨,Simon,有没有支持mysql 8.0的工具?@LasithaWeerasinghe,据我所知不是,但mariadb4j可以与更新的驱动程序版本结合使用,以获得相同的功能。我编辑了我的帖子,以展示您应该向
    pom.xml
    添加什么才能获得这个更新的驱动程序。看起来MySQL 8.0从4.5.0()版本开始就受到支持了。@robin850谢谢,我编辑了我的帖子!
    <dependency>
      <groupId>org.craftercms.mariaDB4j</groupId>
      <artifactId>mariaDB4j-db-win64</artifactId>
      <version>10.4.6.2</version>
    </dependency>