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>
You can combine this with the newest driver to get access to all functionality of MySQL 8.0 (win64
/win32
=windows, mac64
=macos, linux64
=linux):
<dependency>
<groupId>org.craftercms.mariaDB4j</groupId>
<artifactId>mariaDB4j-db-win64</artifactId>
<version>10.4.6.2</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 environments: 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, 8.0;
- Testing matrix for all supported OSes (x86/x64) and versions (5.5, 5.6, 5.7, 8.0).