En el post anterior vimos como configurar todo el entorno para crear nuestra primera aplicación en Openxava.

Ahora vamos a escribir entidades. En realidad deberíamos pensar un poco y diseñar el modelo de como sería la aplicación. En este caso nos hemos basado en el libro «Aprende Java con ejemplos» de Javier Paniza (Aquí los primeros capítulos)

Crear la primera entidad

Para desarrollar la aplicación solo hay que añadir entidades.

Lo primero es crear un paquete para que contenga las clases del modelo, para ello hacemos clic derecho sobre la carpeta src del proyecto invoicing y New -> Package, ponemos como nombre del paquete «org.openxava.model.invoicing.model» y finish

Ahora es cuando creamos una simple clase Java llamada Customer

Ahora solo tenemos que escribir código, para decirle a Openxava que esto es una entidad usamos la anotación @Entity

Aquí tenemos el código http://pastebin.com/g06PxfQu

Configurar persistence.xml

Lo que vamos a hacer ahora es unir la BD con la aplicación web. Para ello modificaremos el archivo persistence.xml que esta dentro de la carpeta Invoicing/persistence/META-INF

Lo primero que hacemos es comentar la configuración anterior «Tomcat + Hypersonic» y «JUnit Hypersonic»

Y escribimos esto:

Aquí dejo el código http://pastebin.com/smyvqfdd

Configurar updateSchema

Para que cada vez que hagamos un cambio en la estructura del modelo, ya sea creando entidades, propiedades persistentes, referencias… vamos a necesitar actualizar el esquema de la BD. Por ejemplo ahora necesitamos crear la tabla Customer.

Lo primero es descargarnos el controlador JDBC de PostgreSQL disponible aquí http://jdbc.postgresql.org/download.html y copiarlo e la carpeta lib de tomcat

Después editamos el archivo Invoicing/build.xml, Openxava trae por defecto tareas en Ant para poder actualizar el esquema, solo hay que escribir la rita del archivo que hemos creado copiado antes.

<target name="actualizarEsquema">
 <ant antfile="../OpenXava/build.xml" target="updateSchemaJPA"> 
 <property name="persistence.unit" value="junit"/>
 <property name="schema.path" value="RUTA \tomcat\lib\postgresql-9.2-1001.jdbc4.jar"/>
 </ant>
 </target>

**RUTA ES la ruta hacia el servidor Tomcat, es decir, la carpeta donde hemos descomprimido OPENXAVA

Ya solo queda probar que todo esta correcto, si no aparece esta imagen, solo debemos posicionarnos sobre build.xml y pinchar sobre «Run As… -> Anf file» y seleccionamos la opción de actualizar esquema:

Ejecutar la aplicación

Como ultimo paso solo nos queda arrancar Tomcat y a correr.

Para probarla entramos aquí: http://localhost:8080/Invoicing/xava/module.jsp?application=Invoicing&module=Customer

Aunque es un poco difícil de configurar en un principio, ya podemos crear aplicaciones de manera rápida y sencilla, con solo una clase Java

Ahora creamos una nueva entidad llamada Producto

Para que los cambios surtan efecto actualizamos el esquema (Run As-> Invoicing Build)

Y con solo presionar CRTL+b tenemos el proyecto construido, para probarlo:

http://localhost:8080/Invoicing/xava/module.jsp?application=Invoicing&module=Procuct

tachán:

Ya tenemos la versión 0.1 de Invoicing funcionando, ahora solo queda modelar un poco la aplicación y unir unas clases más.

Referencias

– https://sites.google.com/site/marcelbaumann/os-projects/CRUD-Applications

https://sourceforge.net/projects/openxava/forums/forum/437013/topic/5526600

 

Actualización

Aquí la parte 1: https://jesuslc.com/2012/12/30/desarrollo-de-aplicacion-de-facturacion-en-15-minutos-con-openxava/

8 respuestas a “Desarrollo de aplicación de facturación en 15 minutos con openxava 2/2”

  1. Avatar de Desarrollo de aplicación de facturación en 15 minutos con openxava 1/2 | Jesús L.C.

    […] Aquí la parte 2: https://jesuslc.com/2013/01/26/desarrollo-de-aplicacion-de-facturacion-en-15-minutos-con-openxava-22/ […]

    Me gusta

  2. Avatar de Carlos Torres
    Carlos Torres

    Buen Día, estoy haciendo el mismo ejemplo de Invoicing pero usando MySql y puedo generar la tabla y todo, pero cuando trato de abrir la aplicación me da un error.

    Me gusta

    1. Avatar de jesuslc

      Así sin datos es un poco complicado contestarte 😉 Si describes un poco más tu caso intentamos solucionarlo.

      Me gusta

  3. Avatar de Carlos Torres
    Carlos Torres

    Gracias por responder. Claro yo lo hice para ver si era rápido que me respondieran, ya te describo mejor lo que hice.

    Me gusta

    1. Avatar de jesuslc

      Hola,
      He visto tu otro comentario, con los logs y demás.
      Si te sirve de ayuda podrías chequear este post que escribí hace tiempo: https://jesuslc.com/2013/01/08/cambiar-de-bd-con-hibernate-openxava/

      Me gusta

      1. Avatar de Carlos Torres
        Carlos Torres

        Buen Día, perfecto déjame probar y te digo. Muchas gracias.

        Me gusta

  4. Avatar de Oscar
    Oscar

    Buenas, estoy siguiendo tu tutorial paso a paso y al compilar me da un error.

    Buildfile: C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\build.xml
    desplegarWar:
    createDist:
    init:
    updateDataSourceInfo:
    configureJNDI:
    prepareWar:
    [copy] Copying 700 files to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\xava
    [copy] Copying 48 files to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF
    createWebXml:
    [loadfile] C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\servlets.xml doesn’t exist
    [loadfile] C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\filters.xml doesn’t exist
    [loadfile] C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\listeners.xml doesn’t exist
    [copy] Copying 1 file to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF
    init:
    copyDTDs:
    copyXavaDTDs:
    [copy] Copying 20 files to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\xava\dtds
    copyComponentDTDs:
    filterXavaFiles:
    filterHibernateFiles:
    filterI18n:
    updateDataSourceInfo:
    filter:
    createEditorsJS:
    [copy] Warning: Could not find file C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\classes\Invoicing-messages_en.properties to copy.
    [copy] Warning: Could not find file C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\classes\Invoicing-labels_en.properties to copy.
    [copy] Warning: Could not find file C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\classes\MensajesInvoicing_en.properties to copy.
    [copy] Warning: Could not find file C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\classes\EtiquetasInvoicing_en.properties to copy.
    deploy:
    [copy] Copying 749 files to C:\Program Files\Java\openxava-4.8.1\tomcat\webapps\Invoicing
    actualizarOX:
    updateOX:
    copyDTDs:
    copyXavaDTDs:
    [copy] Copying 20 files to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\xava\dtds
    copyComponentDTDs:
    [copy] Copying 700 files to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\xava
    [copy] Copying 48 files to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF
    createWebXml:
    [loadfile] C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\servlets.xml doesn’t exist
    [loadfile] C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\filters.xml doesn’t exist
    [loadfile] C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF\listeners.xml doesn’t exist
    [copy] Copying 1 file to C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\web\WEB-INF
    actualizarEsquema:
    defineHibernateTool:
    updateSchemaJPA:
    [hibernatetool] Executing Hibernate Tool with a JPA Configuration
    [hibernatetool] 1. task: hbm2ddl (Generates database schema)
    [hibernatetool] SLF4J: Class path contains multiple SLF4J bindings.
    [hibernatetool] SLF4J: Found binding in [jar:file:/C:/Program%20Files/Java/openxava-4.8.1/workspace/OpenXava/web/WEB-INF/lib/slf4j-jdk14.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    [hibernatetool] SLF4J: Found binding in [jar:file:/C:/Program%20Files/Java/openxava-4.8.1/workspace/Invoicing/web/WEB-INF/lib/slf4j-jdk14.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    [hibernatetool] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    [hibernatetool] oct 30, 2013 8:49:56 AM org.hibernate.annotations.common.Version
    [hibernatetool] Información: Hibernate Commons Annotations 3.2.0.Final
    [hibernatetool] oct 30, 2013 8:49:56 AM org.hibernate.cfg.Environment
    [hibernatetool] Información: Hibernate 3.6.10.Final
    [hibernatetool] oct 30, 2013 8:49:56 AM org.hibernate.cfg.Environment
    [hibernatetool] Información: hibernate.properties not found
    [hibernatetool] oct 30, 2013 8:49:56 AM org.hibernate.cfg.Environment buildBytecodeProvider
    [hibernatetool] Información: Bytecode provider name : javassist
    [hibernatetool] oct 30, 2013 8:49:56 AM org.hibernate.cfg.Environment
    [hibernatetool] Información: using JDK 1.4 java.sql.Timestamp handling
    [hibernatetool] oct 30, 2013 8:49:56 AM org.hibernate.ejb.Version
    [hibernatetool] Información: Hibernate EntityManager 3.6.10.Final
    [hibernatetool] [Fatal Error] :19:9: La cadena «–» no está permitida en los comentarios.
    [hibernatetool] An exception occurred while running exporter #2:hbm2ddl (Generates database schema)
    [hibernatetool] To get the full stack trace run ant with -verbose
    [hibernatetool] Problems in creating a configuration for JPA. Have you remembered to add hibernate EntityManager jars to the classpath ?
    [hibernatetool] java.lang.reflect.InvocationTargetException
    [hibernatetool] javax.persistence.PersistenceException: Invalid persistence.xml.
    [hibernatetool] Error parsing XML (line19 : column 9): La cadena «–» no está permitida en los comentarios.
    [hibernatetool]

    BUILD FAILED
    C:\Program Files\Java\openxava-4.8.1\workspace\Invoicing\build.xml:48: The following error occurred while executing this line:
    C:\Program Files\Java\openxava-4.8.1\workspace\OpenXava\build.xml:1012: Problems in creating a configuration for JPA. Have you remembered to add hibernate EntityManager jars to the classpath ?

    Me gusta

    1. Avatar de jesuslc

      Segun veo en el log que has mandado parece que Hibernate no entiende comentarios con «-»
      ¿Has seguido las 2 partes del tutorial?
      Parece que el archivo persistence.xml. tiene caracteres extraños.

      avax.persistence.PersistenceException: Invalid persistence.xml.
      [hibernatetool] Error parsing XML (line19 : column 9): La cadena “–” no está permitida en los comentarios.
      [hibernatetool]

      Me gusta

Replica a jesuslc Cancelar la respuesta

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.

Jesús López

Soy un Ingeniero en Informática y apasionado de la programación. Me gusta disfrutar de mi familia, viajar y perdernos paseando.  Me mola programar, hacer tests y refactorizar código . Practico Test Driven Development (TDD) y me lo paso bien con el legacy codeLeer más

Sígueme en: