openxava / documentation / Configuration for PostgreSQL

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.
We assume you have already installed and running PostgreSQL.

Download the JDBC driver for PostgreSQL

Download the PostgreSQL driver from here: https://jdbc.postgresql.org/download.html

You will download a file like this: postgresql-42.2.6.jar (the 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...:project-build-path-eclipse-menu_en.png
Then select the Libraries tab:
With this we have the driver available for the development environment.

Add the JDBC driver to the production Tomcat

Adding 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"
	type="javax.sql.DataSource"
	maxTotal="100" maxIdle="20" maxWaitMillis="10000"
	username="root" password="ao49fmsk"
	driverClassName="org.postgresql.Driver"
	url="jdbc:postgresql://localhost:5432/myappdb"/>
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.

Update persistence.xml

You don't need to touch the default persistence unit of persistence.xml (in persistence/META-INF), unless you use hibernate.dialect property in which case just remove hibernate.dialect property. However, you have to modify the junit persistence unit to point to PostgreSQL.
<!-- JUnit PostgreSQL -->
<persistence-unit name="junit">
	<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
	<class>org.openxava.web.editors.DiscussionComment</class>
	<properties>
		<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"/>
	</properties>
</persistence-unit>
Adapt the username, password and url to your PostgreSQL configuration.