openxava / documentación / Configuración para MySQL en OpenXava 6

Si estás usando OpenXava 7.0 o superior mira las instrucciones nuevas
Configurar tu aplicación OpenXava 6.x (o anterior) para ir contra MySQL es muy simple, básicamente has de instalar tu controlador JDBC para MySQL y definir correctamente la fuente de datos. No necesitas tocar nada de código de tu aplicación.
Asumimos que ya tienes MySQL instalado y funcionando.

Descargar el controlador JDBC para MySQL

Descarga el controlador para MySQL desde aquí: https://dev.mysql.com/downloads/connector/j/

Descargarás un archivo como este: mysql-connector-java-8.0.17.zip (el número de versión puede cambiar). Descomprímelo para buscar dentro un archivo llamado mysql-connector-java-8.0.17.jar (o parecido), este último archivo, el .jar, es el controlador JDBC que vamos a usar.

Crear una variable de classpath en Eclipse

Para poder conectar a MySQL desde Eclipse vamos a declarar una variable de classpath que apunte al controlador JDBC de MySQL, así lo podrás usar en cualquier proyecto que lo necesites con facilidad. Para ello, en Eclipse ve a Window > Preferences > Java > Build Path > Classpath Variables donde puedes añadir la nueva variable:
Puedes llamar a la variable MYSQL_DRIVER o CONTROLADOR_MYSQL en lugar de DB_DRIVER si lo prefieres. Path sería la ruta del controlador JDBC, en nuestro caso la ruta del mysql-connector-java-8.0.17.jar que acabamos de descargar.

Añadir la variable DB_DRIVER al proyecto Eclipse

En el proyecto en que vayas a usar MySQL has de añadir la variable que acabas de declarar. Pulsa con el botón derecho del ratón en tu proyecto y selecciona Build Path > Configure Build Path:
project-build-path-eclipse-menu_es.png
Después selecciona la pestaña Libraries:
Con esto tenemos el controlador disponible en el entorno de desarrollo.

Añadir el controlador JDBC al Tomcat de producción

Añadir el controlador en producción es mucho más fácil. Copia mysql-connector-java-8.0.17.jar a la carpeta lib de tu Tomcat. Nada más.

Ajustar la definición de la base de datos

Para desarrollo edita web/META-INF/context.xml de tu proyecto Eclipse y para producción edita conf/context.xml de tu Tomcat, para ajustar la fuente de datos para que apunte a MySQL, algo como esto:
<Resource name="jdbc/MiAplicacionDS" auth="Container"
	type="javax.sql.DataSource"
	maxTotal="100" maxIdle="20" maxWaitMillis="10000"
	username="root" password="ao49fmsk"
	driverClassName="com.mysql.cj.jdbc.Driver"
	url="jdbc:mysql://localhost:3306/"/>
Las diferencias están en el driverClassName y la url. Obviamente, en lugar de localhost deberías poner la dirección del servidor donde está el MySQL, y también poner los valores correctos para username y password.

Actualizar persistence.xml

En la unidad de persistencia default de persistence.xml (en persistence/META-INF) has de cambiar la propiedad hibernate.default_schema por hibernate.default_catalog. Si usas la propiedad hibernate.dialect quítala.
<persistence-unit name="default">
	<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
	<non-jta-data-source>java://comp/env/jdbc/MiAplicacionDS</non-jta-data-source>
	<class>org.openxava.session.GalleryImage</class>
	<class>org.openxava.web.editors.DiscussionComment</class>
	<properties>
		<property name="javax.persistence.schema-generation.database.action" value="update"/>
		<property name="javax.persistence.create-database-schemas" value="true"/> 
		<property name="hibernate.default_catalog" value="miaplicaciondb"/>
		<property name="hibernate.jdbc.use_streams_for_binary" value="true"/>
	</properties>
</persistence-unit>
Fíjate como usamos hibernate.default_catalog para indicar tu base de datos MySQL, miaplicaciondb en este caso.
Además, has de modificar la unidad de persistencia junit para que apunte a MySQL:
<!-- JUnit MySQL -->
<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="com.mysql.jdbc.Driver"/>
		<property name="hibernate.connection.username" value="root"/>
		<property name="hibernate.connection.password" value="ao49fmsk"/>		
		<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/miaplicaciondb"/>
	</properties>
</persistence-unit>
Adapta username, password y url a la configuración de tu MySQL.