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
- Aprende Openxava con ejemplos, Javier Paniza disponible aquí la versión Lite (http://www.openxava.org/es/web/guest/book)
– 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/
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 gustaMe gusta
Así sin datos es un poco complicado contestarte 😉 Si describes un poco más tu caso intentamos solucionarlo.
Me gustaMe gusta
Gracias por responder. Claro yo lo hice para ver si era rápido que me respondieran, ya te describo mejor lo que hice.
Me gustaMe gusta
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 gustaMe gusta
Buen Día, perfecto déjame probar y te digo. Muchas gracias.
Me gustaMe gusta
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 gustaMe gusta
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 gustaMe gusta