Configuring your OpenXava application to go against PostgreSQL is very
simple, basically you have to install the JDBC driver for PostgreSQL and
define correctly the datasource. You don't need to touch any code of your
application. Configuration for PostgreSQL
We assume you have already
installed and running PostgreSQL.
Download the JDBC driver for PostgreSQL
Download the PostgreSQL driver from here:
You will download a file like this: postgresql-42.2.6.jar
version numbers may vary).
Create a classpath variable in Eclipse
In order you can connect to PostgreSQL from Eclipse we're going to declare
a classpath variable that points to the PostgreSQL JDBC driver, so you can
use it in any project you need easily. For that, in Eclipse go to Window
> Preferences > Java > Build Path > Classpath Variables
where you can add the new variable:
You can call the variable
POSTGRESQL_DRIVER instead of DB_DRIVER if your prefer. The path is the
path of the JDBC driver, in our case the path of postgresql-42.2.6.jar
we have just downloaded.
Add the DB_DRIVER variable to your Eclipse project
In the project you're going to use PostgreSQL you have to add the variable
declared above. Click with right mouse button on your project and then
choose Java Build Path > Configure Build Path...
Then select the Libraries
With this we have the driver
available for the development environment.
Add the JDBC driver to the production Tomcat
the driver in production is much easier. Copy postgresql-42.2.6.jar
to the lib folder of your Tomcat. Done.
Adjust your datasource definition
For development edit web/META-INF/context.xml of your Eclipse
project, and for production edit conf/context.xml of your Tomcat
to adjust the datasource to point to PostgreSQL, something like this:
<Resource name="jdbc/MyAppDS" auth="Container"
maxTotal="100" maxIdle="20" maxWaitMillis="10000"
The differences are the driverClassName
and the url. The final part of the url, myappdb in
this example, is the name of your PostgreSQL database. Obviously, instead
of localhost you should put the address of the server that hosts
PostgreSQL, and also put the correct username and password.
You don't need to touch the default
persistence unit of persistence.xml
), unless you use hibernate.dialect
property in which case just remove hibernate.dialect
However, you have to modify the junit
persistence unit to point to
<!-- JUnit PostgreSQL -->
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="ao49fmsk"/>
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/myappdb"/>
Adapt the username, password
and url to your PostgreSQL configuration.