Configurar JDO en NetBeans 6.8

Introduccion :

JDO (Java Data Objects) es una especificación de Java para trabajar con las tecnicas de persistencia de objetos que ofrece el lenguaje, el cual describe el almacenamiento (storage) , consultas (querying) y recuperacion (retrieval) de objetos en un datastore ; la implementacion de JDO en GAE es provista por la DataNucleus Access Platform y corresponde a la especificación JDO 2.3 .

Este articulo describe los pasos que se realizaran para crear un objeto persistente y recuperarlo

Los pasos para llevar a cabo este proceso son :

0 . Si tienes algun problema emocional , es mejor que primero te recuperes y luego intentes programar con JDO.

1 . Crear un proyecto Web simple y usar como servidor a GAE.

2. Debido a que NetBeans no ha automatizado la configuracion del uso de esta API , entonces se tendra que configurar a mano.

3. Crea una clase llamada PMF y ubícala en un paquete , ya que en Netbeans hay problemas para llamar a las clases que no definen un paquete al que pertenecen y los ubica en el paquete <default package>.

4. Hacer clic derecho en el nombre del proyecto y elegir New->Other .

aparecera la pantalla “New File” entonces en el panel Categories dar clic en Other y en el panel File Types seleccionar “Empy File” y dar clic en Next.

aparecera la pantalla “New Empy File” entonces en File Name poner : jdoconfig.xml , luego dar clic en el boton Browse y elegir src->conf del arbol de directorios que muestra .

Veremos que el archivo se crea en el directorio “Configuration Files” del Proyecto.

En el archivo creado copiar el siguiente codigo.

<?xml version="1.0" encoding="utf-8"?>
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig">
<persistence-manager-factory name="transactions-optional">
<property name="javax.jdo.PersistenceManagerFactoryClass"
value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/>
<property name="javax.jdo.option.ConnectionURL" value="appengine"/>
<property name="javax.jdo.option.NontransactionalRead" value="true"/>
<property name="javax.jdo.option.NontransactionalWrite" value="true"/>
<property name="javax.jdo.option.RetainValues" value="true"/>
<property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/>
</persistence-manager-factory>
</jdoconfig>

Ahora , según los pasos que da el tutorial de JDO para GAE especifica que este archivo debe estar ubicado en war/WEB-INF/classes/META-INF/. Si estuvieramos usando JPA como unidad de persistencia, Netbeans los hace de forma automatica en el momento de la compilacion , pero con su propio archivo xml (persistence.xml). La dificultad de copiar el archivo jdoconfig.xml que esta en “Configuration Files” al directorio war/WEB-INF/classes/META-INF/ es que esto se realiza en tiempo de compilacion y no antes.
La solucion se encuentra en el archivo “build-impl.xml” que es usado por NetBeans para organizar los comandos que se aplicaran al Proyecto sea en el preproceso ,compilacion, ejecucion , etc.

Para acceder a este archivo daremos clic a la pestaña Files al costado de Proyecto y desplegar el directorio nbproject.
Lo que haremos a continuacion sera hacer una copia de la estructura de los comandos que NetBeans usa del archivo persistence.xml durante el proceso de compilación.
Lo que se copiará serán los comandos modificados para que el archivo build-impl.xml ejecute los comandos de nuestro jdoxml.xml durante la compilacion al igual que lo hace cuando usa JPA.
5. Abrir el archivo nbproject->project.properties y buscar el texto persistence, luego aparecera resaltada la linea :

persistence.xml.dir=${conf.dir}

, la cual copiaremos y pegaremos en una nueva linea debajo con los sgtes. cambios :

jdoxml.xml.dir=${conf.dir}

6. Ahora vamos al archivo build-impl.xml y buscamos persistence, tras lo cual apareceran resaltadas todas las coincidencias , la primera es :

<available file="${persistence.xml.dir}/persistence.xml" property="has.persistence.xml"/>

Hacemos una copia y hacemos los siguientes cambios en una nueva linea a continuación.

<available file="${jdoxml.xml.dir}/jdoconfig.xml" property="has.jdoconfig.xml"/>

Esta linea es la definicion de una propiedad a la que hemos llamado de forma casi igual a la de la propiedad  “has.persistence.xml” y hemos hado la ruta del archivo jdoconfig.xml en el Proyecto.

7. seguimos buscando y nos ubicamos en la siguiente estructura o target llamado -copy-persistence-xml :

<target if="has.persistence.xml" name="-copy-persistence-xml">
...
<fileset dir="${persistence.xml.dir}" includes="persistence.xml"/>
</copy>
</target>

Esta es una orden que indica copiar el archivo persistence.xml al directorio /WEB-INF/classes/META-INF en el caso se use JPA en el proceso de la compilacion.
Asi que para igualar el comando copiamos el target -copy-persistence-xml y hacemos los siguientes cambios y tendremos nuestro target de nombre -copy-jdoxml-xml

<target if="has.jdoconfig.xml" name="-copy-jdoxml-xml">
...
<fileset dir="${jdoxml.xml.dir}" includes="jdoconfig.xml"/>;
</copy>
</target>

8. Luego ir al target -do-compile y en depends ubicar -copy-persistence-xml , asi que despues de el ponemos nuestro target : -copy-jdoxml-xml

Como se ve solo es cuestion de usar todo lo que tiene que ver con JPA y cambiarlo por JDO y de esta manera Netbeans Generara el war correcto para JDO y estara listo para usarlo en el Proyecto.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s