= Apache OpenJPA - README

== Preface
Thank you for downloading this release of Apache OpenJPA.

Apache OpenJPA is an implementation of the Jakarta Persistence API 3.0 specification.


== License
The content of this repository is licensed under Apache License 2.0
http://www.apache.org/licenses/LICENSE-2.0

== Further Information

The following files can be found in the openjpa-project subdirectory:

* openjpa-project/BUILDING.txt
* openjpa-project/CHANGES.txt
* openjpa-project/RELEASE-NOTES.html

For documentation and project information, please visit our project site:
    http://openjpa.apache.org/


== Compiling

The best way to compile Apache OpenJPA yourself is to run the build against the default derby database.

 $> mvn clean install -Dsurefire.excludes.locking=**/*

== Testing against different Databases

The Apache OpenJPA project also contains a setup for testing against multiple databases.
The easiest way is to use Docker.
We assume that Docker is installed to be used by your current user.
The respective database image has to be started manually before starting the build.
The reason for not starting it as part of the build itself is to be able to look at the database content after the build did run.

[TIP]
====
*Hint for running with Podman*

Some distributions switched from native Docker to Podman.
If you get an error like `missing DOCKER_HOST` then you might try running the following command:

  export DOCKER_HOST="unix:/run/user/$(id -u)/podman/podman.sock"
  podman system service -t 3600 &
  mvn ...
====

To start e.g. a PostgreSQL Docker image you can simply invoke the following command.
Note the -N Maven option which stands for 'non-recursive'.
This is used because the docker container is configured only at the root project but not at his children.

 mvn -N -Ptest-mysql-docker docker:start

After that, you can execute your tests with the respective Maven profile

 mvn clean install -Ptest-mysql-docker

Once the Docker image for the database is not needed any longer one can stop and remove it:

 mvn -N -Ptest-mysql-docker docker:stop
 mvn -N -Ptest-mysql-docker docker:remove


The following Maven profiles do exist so far:

* test-mysql-docker
* test-mariadb-docker
* test-postgresql-docker
* test-mssql-docker
* test-oracle-docker
