Bueno primero crearemos las librerias de NetBeans nos vamos a Tools-> Libraries y seleccionamos New, escribimos Hibernate JPA, y seleccionamos Add JAR/Folder, ahora buscamos todos los JAR ok? dije JAR!!!! no folders... que les pedi en la parte pasada del tutorial... ahora bien... hacemos lo mismo para ZK y ZK JSF, solo queremos los JAR que estan dentro de la carpeta libs para ZK y ZK JSF.
Bueno.. creemos una base de datos sencilla con dos tablas... tiene MySQL cierto??, si no busquen como instalarlo para su propia distribucion de linux... por que tienen linux verdad??? jejeje bueno.. como sea... instalen MySQL... para este tutorial... no entrare en detalles de como lo instalamos... y asumire que son expertos en la materia... despues posteare algo sobre MySQL...
entramos a MySQL, y crearemos una pequeña base de datos de escuelas...
Para crear una base de datos
CREATE DATABASE escuela;
Para crear las tablas
CREATE TABLE instituto (id_inst int primary key auto_increment, nombre varchar(20), direccion varchar(20)) ENGINE=InnoDB;
CREATE TABLE profesor (id_prof int primary key auto_increment, nombre varchar(20),id_inst int) ENGINE=InnoDB;
Para crear la relacion
Todo es una sola linea..
ALTER TABLE profesor
ADD CONSTRAINT profesor_instituto
FOREIGN KEY (id_inst)
REFERENCES instituto (id_inst)
ON DELETE RESTRICT
ON UPDATE CASCADE;
Ahora nos vamos a File->New Proyect y seleccionamos Web | Web Application, le ponemos escuela al proyecto, seleccionamos tomcat como servidor y seleccionamos JavaServer Faces.
En source proyects creamos un nuevo paquete y le llamamos DataBase, hacemos clic derecho seleccionamos New y despues DataBase, despues seleccionamos New Other para elegir Persistence | Entity Classes from Database, en DataSource seleccionamos New DataSource, ahi seleccionamos DataBase Connection-> new database connection, nos aparecera un dialogo para conectarnos con MySQL seleccionamos MySQL connector, el driver nos vale...pero en DataBase URL escribimos jdbc:mysql://127.0.0.1/escuela, pongan 127.0.0.1 por que luego en unas distros no funciona el localhost por que traen una configuracion rara... y no me voy a poner a decir como quitarselas ahorita.. jeje
Debe aparecernos que la conexion fue existosa.. si no... algo escribiste mal.. o no tienes levantado mysql... /etc/init.d/mysql start lo levanta.. :D
Seleccionamos las dos clases que antes hemos creado... Instituto aparecera de manera rara por que fue incluida ya que hay una clave foranea hacia ella.
Ahora hay que crear una unidad persistente, seleccionamos CREATE PERSISTENCE UNIT, nos creare una unidad persistente solo falta seleccionar Hibernate como nuestro manejador,
De todos modos les dejo mi persistence.xml
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xsi="http://www.w3.org/2001/XMLSchema-instance" schemalocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="tiempoairePU" type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.connection.username" value="usuario">
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver">
<property name="hibernate.connection.password" value="password">
<property name="hibernate.connection.url" value="jdbc:mysql://127.0.0.1/escuela">
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect">
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider">
<property name="hibernate.c3p0.acquire_increment" value="3">
<property name="hibernate.c3p0.idle_test_period" value="14400">
<property name="hibernate.c3p0.timeout" value="25200">
<property name="hibernate.c3p0.max_size" value="15">
<property name="hibernate.c3p0.min_size" value="3">
<property name="hibernate.c3p0.max_statements" value="0">
<property name="hibernate.c3p0.preferredTestQuery" value="select 1;">
</property>
</property>
</property>
Automaticamente tenemos nuestras clases mapeadas... si nos marca error tenemos que entrar a las propiedades del proyecto, clic derecho Properties, Libraries Add Library y seleccionamos HibernateJPA la libreria que antes creamos, junto con ZK y ZK JSF.
AUTONUMERICO HIBERNATE
Aqui hay un error con la generacion de NetBeans puesto que como usamos autonumerico... necesitamos agregar unas lineas para que nos respeten el autonumerico, si todo salio bien deberia estar en Instituto .java despues de la linea @Id debemos escribir @GeneratedValue, y debemos importar javax.persistence.GeneratedValue; en Instituo y Profesor, ahora no tenemos problemas...
Bien ahora configuramos NetBeans para usar ZK en Configuration Files nos vamos a Web.xml y escrimos estas lineas en el apartado donde veas los listener
<listener>
<description>Para limpiar la basura de las sesiones</description>
<display-name>ZK Session Cleaner</display-name>
<listener-class>org.zkoss.zk.ui.http.HttpSessionListener</listener-class></listener>
Y en donde veas las tags de servlet escribe estas.. (de preferencia antes de las de JSF)
<servlet>
<description>ZK cargador para pagimas ZUML</description>
<servlet-name>zkLoader</servlet-name>
<servlet-class>org.zkoss.zk.ui.http.DHtmlLayoutServlet</servlet-class>
<init-param>
<param-name>update-uri</param-name>
<param-value>/zkau</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<description>Engine para la actualizacion asincrona</description>
<servlet-name>auEngine</servlet-name>
<servlet-class>org.zkoss.zk.au.http.DHtmlUpdateServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>zkLoader</servlet-name>
<url-pattern>*.zul</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>zkLoader</servlet-name>
<url-pattern>*.zhtml</url-pattern>
</servlet-mapping>
Ahora ya estamos listos para usar ZK, tenemos que entrar en nuestro archivo WelcomeJSF.jsp
Agregamos nuestra TAG
<%@taglib prefix="z" uri="http://www.zkoss.org/jsf/zul" %>
esto nos permite usar ZK en JSF... y va donde van todas las demas tags casi hasta el principio
<z:page>
<z:window title="Hola" border="normal">
Hola
</z:window>
</z:page>
Bueno ya esta funcionando despues veremos acerca del binding
4 comentarios:
wow, justo lo que necesitaba, gracias xD... un nuevo lector del blog jajaja
Una pregunta, estoy haciendo una aplicacion en Java con MySQL, no es orientado Web, logre configurar como dijiste el hibernate, sin embargo, estoy tratando de crear el EntityManager pero ma de un error de que no consigue "org/slf4j/LoggerFactory", alguna idea?, se que este no es el mejor medio para pregunta, disculpa es que tengo dias con esto
Hola,ya hice todos los pasos que comentas solo que cuando cargo el codifo de zk ya no funciona la pagina
Estado de HTTP 500 -
type Informe de excepción
Mensaje
DescripciónEl servidor encontró un error interno () que impide satisfacer la solicitud.
Excepción
org.apache.jasper.JasperException: java.lang.IllegalArgumentException: Not a Page:javax.faces.component.UIViewRoot@16a5acd
Causa principal
java.lang.IllegalArgumentException: Not a Page:javax.faces.component.UIViewRoot@16a5acd
nota Las causas de los seguimientos de pila completos de la excepción y su root se encuentran disponibles en los Sun Java System Application Server 9.1_02 registros.
Sun Java System Application Server 9.1_02
alguna solucion?
Hola, Tienes un video sobre este post?? o podrías poner algunos pantallazos para giarme.
Seria genial.
De antemano gracias.!
Publicar un comentario