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:
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.