Spring Hibernate Jsf

Embed Size (px)

Citation preview

  • 8/2/2019 Spring Hibernate Jsf

    1/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina1 de 22

    OBJETIVO

    PROBLEMA

    CONCEPTOS PREVIOSEsquema de trabajo de SPRING MVC

    CREACIN DE PROYECTOCreamos un proyecto Web indicando que los frameworks que se utilizarn

    sern: Spring MVC, Hibernate y Java Server Faces. Recordar que al

    seleccionar Hibernate se debe seleccionar la conexin a la base de datos

    que contiene las tablas del tutorial.

    En mi caso el proyecto lo he llamado SpringHibernate lo que deja la

    distribucin de los archivos del proyecto como se indica en la siguiente

  • 8/2/2019 Spring Hibernate Jsf

    2/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina2 de 22

    figura. Algunos de estos archivos sern modificados a lo largo deltutorial, as como se agregaran otros.

    CREACIN DE PAQUETES ORGANIZACIN DE CLASES

    Se van a crear los siguientes paquetes: bean, bo, dao, negocio.

    CREACIN DE ARCHIVOS POJO

    Se van a crear las clases a partir del mapeo de las tablas que contieneel modelo de datos con el cual se va a trabajar. Las clases POJO debernquedar en el paquete negocio.

    Ahora creamos el asistente para la ingeniera inversa:

    No cambiamos ningn valor y hacemos clic en Next:

  • 8/2/2019 Spring Hibernate Jsf

    3/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina3 de 22

    Se seleccionan las tablas que forman parte del modelo y clic en Finish

  • 8/2/2019 Spring Hibernate Jsf

    4/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina4 de 22

    Antes de continuar, y para no olvidarlo despus, se hacen los cambios enel XML de la configuracin de Hibernate:

    Ahora si estamos en condiciones de generar las clases que representan elmapeo entre el mundo relacional y el orientado a objetos:

  • 8/2/2019 Spring Hibernate Jsf

    5/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina5 de 22

    Seteamos algunos valores y clic en Finish

  • 8/2/2019 Spring Hibernate Jsf

    6/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina6 de 22

    Las clases se han creado y la estructura de los archivos de mi proyectoes:

    Hasta ahora hemos considerado en nuestro proyecto la fuente de los datos,

    lo que viene a corresponder a la parte de modelo (la M de MVC) de laarquitectura de Spring. Ahora debemos trabajar en la vista (la V de MVC)y el controlador (la C de MVC).

    LA CAPA DE ACCESO A DATOS (DAO)

  • 8/2/2019 Spring Hibernate Jsf

    7/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina7 de 22

    La clase ActorDAO se extiende de la clase HibernateDaoSupport lo que

    facilitar el acceso a los datos almacenados en la base de datos. Esconveniente hacer notar que slo invocando al mtodogetHibernateTemplate() se pueden implementar las operaciones sobre labase de datos, en este caso, actualizar registro (mtodo saveOrUpdate())y listar (mtodo find())

    LA CAPA DE LGICA DE NEGOCIO Y EL MARCO DE TRABAJO SPRING

    Los objetos y servicios de negocio existen en la capa de lgica denegocio. Un objeto de negocio no slo contiene datos, tambin la lgicaasociada con ese objeto especfico. En la aplicacin de ejemplo se hanidentificado dos objetos de negocio: Actor y Pelcula.

    Los servicios de negocio interactan con objetos de negocio yproporcionan una lgica de negocio de ms alto nivel. Se debera definiruna capa de interfaz de negocio formal, que contenga los interfaces deservicio que el cliente utilizar directamente. POJO, con la ayuda delmarco de trabajo Spring, implementar la capa de lgica de negocio de laaplicacin. Hay dos servicios de negocio: IActorBO contiene la lgica denegocio relacionada con el manejo de los actores, y IPeliculaBO contienela lgica de manejo de las pelculas.

  • 8/2/2019 Spring Hibernate Jsf

    8/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina8 de 22

    Ahora definimos la clase para implementar los servicios:

  • 8/2/2019 Spring Hibernate Jsf

    9/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina9 de 22

    NOTA. Las interfaces/clases anteriores DEBERN estar incluidas en elpaquete bo.

    CLASES DEL NEGOCIO (MODELO/NEGOCIO)

    Estas clases son las que fueron generadas a travs del proceso deingeniera inversa.

    CAPA DE PRESENTACIN

    La implementacin de la capa de presentacin implica crear las pginasJSP, definir la navegacin por las pginas, crear y configurar los beansde respaldo, e integrar JSF con la capa de lgica de negocio.

    Primero vamos a revisar la clase que define el bean:

    Algunos mtodos getter/setter:

  • 8/2/2019 Spring Hibernate Jsf

    10/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina10 de 22

  • 8/2/2019 Spring Hibernate Jsf

    11/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina11 de 22

    Un mtodo importante:

    Finalmente, el mtodo para limpiar el formulario:

  • 8/2/2019 Spring Hibernate Jsf

    12/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina12 de 22

    ARCHIVOS DE CONFIGURACIN

    A continuacin se detallarn los archivos de configuracin con los cualesse trabajar.

    Archivo applicationContext.xml

    Contiene las definiciones de los beans que usar la aplicacin. Hay unaparte que viene comentada en el archivo que tiene el proyecto y se va adescomentar, que consiste en la definicin de dos beans que tienen quever con la fuente de datos:

    Como se aprecia en el cdigo anterior se pueden definir los parmetros deconexin con la base de datos en un archivo llamado jdbc.properties, ases que creamos un archivo de properties en nuestro proyecto:

  • 8/2/2019 Spring Hibernate Jsf

    13/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina13 de 22

    El contenido de este archivo DEBE ser el que se indica a continuacin:

    jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/nombre-base-de-datosjdbc.username=userjdbc.password=password

    En caso de que haya configurado el motor de base de datos para que noutilice password, entonces simplementeNO INCLUYA LA LNEA.

    Ahora agregamos el bean para la configuracin de la base de datospropiamente tal y tenemos:

    Lo anterior define un bean llamado sessionFactoryel cual contiene trspropiedades:

    dataSource hibernateProperties zappingResources

    El property (propiedad) dataSource usa como referencia el bean definidoanteriormente. En el caso del property hibenateProperties tiene los tems(key) que se encuentran en el archivo de configuracin de Hibernate (quese encuentra en el archivo hibernate.cfg.xml. Finalmente, el propertymappingResources tiene la lista de XML de mapeo entre las clases y lastablas (que fueron generados al principio del tutorial).

  • 8/2/2019 Spring Hibernate Jsf

    14/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina14 de 22

    Archivo ActorBean.xml

    Contiene las definiciones de los beans asociados a la capa de lgica denegocio y la capa de acceso a datos. El contenido de este archivo DEBERser:

    En el se crean los beans asociados a las clases de lgica de negocio yacceso a datos. La lgica dice que la capa de lgica de negocios seconecta con la capa de acceso a datos y de ah el vnculo entre estosbeans.

    En este caso cada bean tiene asociada una clase y las property que sedefinen tienen que ver con los atributos que se estn seteando. Sirevisamos la clase ActorBO tiene un atributo llamado ActorDAO que es elque estamos seteando. Algo similar sucede con el atributo sessionFactoryde la clase ActorDAO, la diferencia es que este atributo viene heredadodesde la clase HibernateDaoSupport de la cual est extendiendo.

    Ahora vamos a agregar las siguientes lneas al archivoapplicationContext.xml:

    Con lo anterior estamos importando el contenido del XML con ladefinicin de los bean asociados al Actor.

  • 8/2/2019 Spring Hibernate Jsf

    15/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina15 de 22

    Archivo dispatcher-servlet.xml

    Contiene la definicin de los beans con los cuales va a trabajar laaplicacin. Es un archivo generado al momento de crear el proyecto yahora le vamos a agregar los beans que acabamos de definir. Las lneasque se deben AGREGAR AL FINAL DEL ARCHIVO son:

    Archivo faces-config.xml

    Contiene la configuracin para trabajar con JSF. Tambin es un archivogenerado cuando se crea el proyecto y le agregaremos algunos tag.

    Ac estamos definiendo el bean que va a trabajar con la aplicacin que

    tiene asociada la clase ActorBean que fue descrita anteriormente yseteamos el atributo (property) actorBO con el bean definidoanteriormente.

  • 8/2/2019 Spring Hibernate Jsf

    16/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina16 de 22

    Archivo web.xml

    Contiene la configuracin general del proyecto, tambin es un archivogenerado y ac slo vamos a modificar el archivo de bienvenida que, pordefecto, viene seteado con redirect.jsp y lo cambiaremos porfrmActor.jsp:

    CAPA DE PRESENTACIN

    Ahora slo falta crear la capa de presentacin para poder probar todo.Vamos a crear una pgina similar a:

    La siguiente figura muestra algunos elementos que forman parte de lainterfaz.

  • 8/2/2019 Spring Hibernate Jsf

    17/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina17 de 22

    Ahora miremos un poco el cdigo que hay:

    La pgina est formada por una vista principal la que contienedos formularios uno para los datos y otro para la tabla. Vamosa revisar el formulario de los datos:

    El formulario est formado por un panel de tres columnas .Las tres columnas son para las etiquetas, los campos de texto y el mensaje . Fuera del panel est el botn queva a enviar el formulario al servidor .

    Lo interesante ac es la propiedad value de los inputText, ya que estapropiedad tiene el valor asociado al bean que hemos definido y declaradoen los archivos de configuracin (recordar que lo llamamos actor en elarchivo faces-config.xml). Usando la notacin (.) accedemos a los

  • 8/2/2019 Spring Hibernate Jsf

    18/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina18 de 22

    atributos y mtodos definidos en el bean (lo que en el fondo estdefinido en la clase).

    En el caso de la entrada asociada a la edad se tiene una propiedadllamada converter que nos va a permitir validar cuando se ingresanletras y algo similar sucede con la propiedad required que obliga a que

    los campos tengan valores antes de ser enviados al servidor.

    Para el caso del botn se asocia a la propiedad action la llamada almtodo addActor() que se encuentra en el bean actor: #{actor.addActor}.

    Ahora revisemos el segundo formulario (asociado a la tabla):

    En este extracto de cdigo es posible apreciar que la tabla tiene unapropiedad llamada binding que se relaciona con los datos que sernincluidos en la tabla. En este caso es el atributo tabla del bean actor,revisemos un poco esa parte del cdigo para poder entender eso delbinding.

    La clase ActorBean tiene, entre otros, estos atributos:

    Y entre otros mtodos estn:

  • 8/2/2019 Spring Hibernate Jsf

    19/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina19 de 22

    Y como se ve en el mtodo getLista() usa los servicios de la claseActorBO (a travs de su atributo actorBO) para obtener la lista deactores (contenido de la tabla).

    Cuando en el binding del archivo JSP tenemos #{actor.lista} estamos

    llamando al mtodo getLista() (ac sirve el hecho de usar la nomenclaturaBean para definir los mtodos). La explicacin de la propiedad value delos salvo que ahora estamos haciendo referencia a unobjeto (llamado a) definido en la propiedad var del . Eneste caso como se est asociando a un outputText se llama al mtodo getdel atributo que se est vinculando.

    Finalmente, est la explicacin del :

    Cuya propiedad action est asociada al mtodo seleccionLista() que seencuentra en la clase ActorBean (asociada al bean actor). Ese mtodo

    selecciona el objeto desde la tabla y modifica los atributos del bean ycuando la pgina se recarga ser ese el objeto que est cargado enmemoria y sus datos se desplegarn en los del formulario.

  • 8/2/2019 Spring Hibernate Jsf

    20/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina20 de 22

    LTIMO CAMBIO Y A EJECUTAR EL PROYECTO

    El ltimo cambio que debemos realizar es en las propiedades del proyectosegn como lo indica la siguiente figura:

    Ahora ejecutamos el proyecto y podemos visualizar el detalle del archivoLOG del servidor y si todo anduvo bien podremos ver cmo se visualizanuestra humilde y sencilla pgina en el navegador. Adems podemos vernuestro proyecto alojado en el servidor, abriendo la consola deadministracin del servidor:

    Con lo que llegars a:

  • 8/2/2019 Spring Hibernate Jsf

    21/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina21 de 22

    Donde debes ingresar el usuario y clave de acceso del servidor para luegovisualizar la interfaz de la consola en donde, entre muchas otras cosas,podremos visualizar el detalle de las aplicaciones alojadas:

    En este caso el proyecto alojado muestra las siguientes caractersticas:

  • 8/2/2019 Spring Hibernate Jsf

    22/22

    Preparado por Jazna Meza Hidalgo

    Sun Certified Java Programmer SCJP 5.0Pgina22 de 22

    TRABAJO FUTURO

    En la siguiente entrega veremos como mejorar y potenciar la interfazusando otros controles de JSF y agregar la funcionalidad asociada a laspelculas.