Configurar tu aplicación OpenXava
6.x (o anterior) para ir contra Oracle es muy simple, básicamente has de
instalar tu controlador JDBC para Oracle y definir correctamente la fuente
de datos. No necesitas tocar nada de código de tu aplicación.
Asumimos que ya tienes Oracle
instalado y funcionando.
Descargar el controlador JDBC para Oracle
Descarga el controlador para Oracle desde aquí: https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html
Escoge la versión de base de datos que estés usando y esto te llevará a la
página de descarga específica para esa versión. Una vez allí, descarga el
archivo
ojdbc8.jar, si estás usando una versión antigua de Oracle
podría ser
ojdbc7.jar o
ojdbc6.jar.
Crear una variable de classpath en Eclipse
Para poder conectar a Oracle desde Eclipse vamos a declarar una variable
de classpath que apunte al controlador JDBC de Oracle, 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
ORACLE_DRIVER o CONTROLADOR_ORACLE en lugar de DB_DRIVER si lo prefieres.
Path sería la ruta del controlador JDBC, en nuestro caso la ruta
del ojdbc8.jar que acabamos de descargar.
Añadir la variable DB_DRIVER al proyecto Eclipse
En el proyecto en que vayas a usar Oracle 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 ojdbc8.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 Oracle, algo como esto:
<Resource name="jdbc/MiAplicacionDS" auth="Container"
type="javax.sql.DataSource"
maxTotal="100" maxIdle="20" maxWaitMillis="10000"
username="root" password="ao49fmsk"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:misid"/>
Las diferencias están en el driverClassName
y la url. La parte final de la url, misid en este ejemplo,
es el sid de tu base de datos Oracle. Obviamente, en lugar de localhost
deberías poner la dirección del servidor donde está el Oracle, y también
poner los valores correctos para username y password.
Actualizar persistence.xml
Necesitas tocar la unidad de persistencia default de persistence.xml
(en persistence/META-INF), para añadir la propiedad hibernate.dialect
con el valor correcto para tu versión de Oracle:
<!-- Unidad de persistence por defecto para Oracle -->
<persistence-unit name="default">
...
<properties>
...
<!-- AÑADE LA SIGUIENTE PROPIEDAD -->
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect"/>
</properties>
</persistence-unit>
Deberías usar Oracle12cDialect
para Oracle 12 o superior, es decir para Oracle 19 también usarías Oracle12cDialect,
como se muestra arriba. Para versiones más antiguas de Oracle puedes usar
Oracle10gDialect o Oracle8iDialect.
Además, sí que has de modificar la
unidad de persistencia
junit para que apunte a Oracle:
<!-- JUnit Oracle -->
<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="oracle.jdbc.OracleDriver"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="ao49fmsk"/>
<property name="hibernate.default_schema" value="facturacion"/>
<property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:1521:misid"/>
</properties>
</persistence-unit>
Adapta username, password
y url a la configuración de tu Oracle.