Java, MySQL: Is there a way to embed a MySQL server with a Java program?

久未见 提交于 2019-11-28 10:54:29

A quick search shows this: MySQL Connector/MXJ — for embedding MySQL server in Java applications on the MySQL Downloads page at:

http://dev.mysql.com/downloads/

If you don't mind using MariaDB (the open source variant of MySQL, basically works the same) MariaDB4j can be the perfect option for production enviroments.

MariaDB4j is a Java (!) "launcher" for MariaDB (the "backward compatible, drop-in replacement of the MySQL(R) Database Server", see FAQ and Wikipedia), allowing you to use MariaDB (MySQL(R)) from Java without ANY installation / external dependencies. Read again: You do NOT have to have MariaDB binaries installed on your system to use MariaDB4j!

As it works completely without any requirements that have to be on the users' pc it is probably the best option to get MySQL embedded. Converting a project that doesn't use an Embedded database into MariaDB4j is as easy as calling:

DB db = DB.newEmbeddedDB(3306);

Read the github page for more information. Maven central dependency is:

<dependency>
    <groupId>ch.vorburger.mariaDB4j</groupId>
    <artifactId>mariaDB4j</artifactId>
    <version>2.2.3</version>
</dependency>

If you do mind using MariaDB, another option is Wix Embedded MySQL.

Wix Embedded MySQL is a library that provides a way to run real MySql within integration tests.

Why?

  • Your tests can run on production-like environment: match version, encoding, timezone, database/schema/user settings;
  • Its easy, much easier than installing right version by hand;
  • You can use different versions/configuration per project without any local set-up;
  • Supports multiple platforms: Windows, Linux and OSX;
  • Provides constantly updated multiple versions of MySql - 5.5, 5.6, 5.7;
  • Testing matrix for all supported OSes (x86/x64) and versions (5.5, 5.6, 5.7).
zcourts

For future reference to anyone looking to embed mysql, there is a utility from the mysql guys that does this http://downloads.mysql.com/archives/c-mxj/

It sounds like you want an embedded database. While MySQL Connector seems nice, it will launch a separate server process. If you want the database server to run in the Java virtual machine, there are several embedded databases for Java.

The two that I've seen used the most are:

  1. Apache Derby / JavaDB
  2. HSQL
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!