Вы находитесь на странице: 1из 26

Ing.

Salvador Pea

Temas a desarrollar en la prctica: Pool de conexiones, JDBC Resources, Entidades, Unidad de Persistencia, DAO, Managed Bean, JPQL, JSF y PrimeFaces, Facelets Template, Facelets Template Client.
En la presente gua se utilizara la base de datos biblioteca2 creada en PostreSql:

/*Crear la base de datos*/ create database Biblioteca2; /*Creacin de tablas de la base de datos*/ create table Editorial( Cod_Ed int not null, Nombre_Ed varchar(50) not null, Pais_Ed varchar(30) not null, Telefono_Ed char(10), constraint pk_Editorial primary key(Cod_Ed) ); create table Autor( Id_Autor int not null, Nombre_Autor varchar(50) not null, constraint pk_Autor primary key(Id_Autor) ); create table Lector( Num_Tarjeta int not null, Nombre_Lector varchar(50) not null, Direccion_Lector varchar(100),

Ing. Salvador Pea Telefono_Lector char(10), DUI char(10) not null, constraint pk_Lector primary key(Num_Tarjeta) ); create index indice_DUI on Lector(DUI);

create table Libro( Id_Libro int not null, Titulo varchar(50) not null, Cod_Ed int not null, ISBN char(10) not null, constraint pk_Libro primary key(Id_Libro), constraint fk_Libro foreign key(Cod_Ed) references Editorial(Cod_Ed) on delete cascade on update cascade ); create index indice_ISBN on Libro(ISBN);

create table Autores_Libro( Id_Libro int not null, Id_Autor int not null, constraint pk_AutoresLibro primary key(Id_Libro, Id_Autor), constraint fk1_AutoresLibro foreign key(Id_Libro) references Libro(Id_Libro) on update cascade on delete cascade, constraint fk2_AutoresLibro foreign key(Id_Autor) references Autor(Id_Autor) on update cascade on delete cascade ); create table Prestamos(

Ing. Salvador Pea Id_Prestamo int not null, Num_Tarjeta int not null, Fecha_Salida timestamp not null, constraint pk_Prestamos primary key(Id_Prestamo), constraint fk_Prestamos foreign key(Num_Tarjeta) references Lector(Num_Tarjeta) on update cascade on delete cascade ); create table Detalle_Prestamo( Id_Prestamo int not null, Id_libro int not null, Fecha_Devol timestamp not null, mora float default 0.0, devuelto int default 0, constraint pk_DetallePrestamo primary key(Id_Prestamo, Id_libro), constraint fk1_DetallePrestamo foreign key(Id_Prestamo) references Prestamos(Id_Prestamo) on update cascade on delete cascade, constraint fk2_DetallePrestamo foreign key(Id_libro) references Libro(Id_Libro) on update cascade on delete cascade );

insert into Editorial values(100000, 'ADDISON-WESLEY', 'Espaa', null); insert into Editorial values(100001, 'Anaya Multimedia', 'Espaa', null); insert into Editorial values(100002, 'ECO', 'Espaa', Null); insert into Editorial values(100003, 'EIDOS', 'Espaa', Null); insert into Editorial values(100004, 'FEXLIB', 'Mexico', Null); insert into Editorial values(100005, 'McGraw-Hill', 'Mexico', Null); insert into Editorial values(100006, 'Pearson', 'Espaa', Null);

Ing. Salvador Pea insert into Editorial values(100007, 'RA-MA', 'Espaa', Null); insert into Editorial values(100008, 'TECNOS-2009', 'Espaa', Null);

insert into Lector values(32311,'Moises Alejandro Prez', 'Santa Tecla', '2132-7878', '22771234'); insert into Lector values(23411,'America Maria Gmez', 'Santa Tecla', '2154-8787', '22771235'); insert into Lector values(67812,'Javier Adrian Serrano', 'San Salvador', '2345-5689', '22771236'); insert into Lector values(92112,'Francisco Javier Maldonado', 'San Salvador', '7777-8888', '22771237'); insert into Lector values(21312,'Melissa Mendoza Palacios', 'La Libertad', '7743-9876', '22771238');

insert into Autor values(10, 'Oros Cabello, Juan Carlos'); insert into Autor values(11, 'Landa Cosio, Nicol'); insert into Autor values(12, 'Mellon, Jim'); insert into Autor values(13, 'Gamero Casado, Eduardo'); insert into Autor values(14, 'Gonzalez Perez, Jess'); insert into Autor values(15, 'Parada, Ramn'); insert into Autor values(16, 'Caceres, Fernando'); insert into Autor values(17, 'Silberschats, Abraham'); insert into Autor values(18, 'Balnks, Lapark'); insert into Autor values(19, 'Perez Augusto, Cesar'); insert into Autor values(20, 'Caceres Chiquillo, Juan');

insert into Libro values(1, 'Diseo de Pagina Web con XHTML, JavaScript y CSS', 100006, '123456789'); insert into Libro values(5, 'Prgramacin de graficos 3D', 100006, '223456789');

Ing. Salvador Pea insert into Libro values(6, 'MySQl y JAVA', 100007, '323456789'); insert into Libro values(7, 'Manual bsico de derecho administrativo', 100008, '423456789'); insert into Libro values(8, 'Sistema Juridico de administracin publica', 100006, '523456789'); insert into Libro values(9, 'Derecha administrativo 1ra Ed.', 100007, '623456789') ; insert into Libro values(10, 'Derecho administrativo 2da Ed.', 100000, '723456789'); insert into Libro values(11, 'Sistemas de bases de datos', 100001, '823456789'); insert into Libro values(12, 'Fundamentos de diseo de bases de datos', 100003, '923456789'); insert into Libro values(13, 'SQL Server 2008', 100002, '103456789'); insert into Libro values(14, 'Microsoft Visual Basic.Net', 100002, '113456789'); insert into Libro values(24, '3d Studio Max', 100001, '123456789');

insert into Autores_Libro values(1, 10); insert into Autores_Libro values(5, 11); insert into Autores_Libro values(6, 12); insert into Autores_Libro values(6, 21); insert into Autores_Libro values(7, 14); insert into Autores_Libro values(8, 15); insert into Autores_Libro values(8, 16); insert into Autores_Libro values(9, 17); insert into Autores_Libro values(10, 18); insert into Autores_Libro values(11, 19); insert into Autores_Libro values(12, 20); insert into Autores_Libro values(13, 21); insert into Autores_Libro values(13, 22); insert into Autores_Libro values(13, 13); insert into Autores_Libro values(14, 21);

Ing. Salvador Pea insert into Autores_Libro values(24, 11);

insert into Prestamos values(1, 32311, '11/08/2012'); insert into Prestamos values(2, 23411, '11/08/2012'); insert into Prestamos values(3, 67812, '12/08/2012'); insert into Prestamos values(4, 92112, '12/08/2012'); insert into Prestamos values(5, 21312, '12/08/2012'); insert into Prestamos values(6, 32311, '15/08/2012'); insert into Prestamos values(7, 23411, '16/08/2012'); insert into Prestamos values(8, 67812, '20/08/2012'); insert into Prestamos values(9, 92112, '21/08/2012'); insert into Prestamos values(10, 21312, '21/08/2012'); insert into Prestamos values(11, 32311, '21/08/2012'); insert into Prestamos values(12, 23411, '07/09/2012'); insert into Prestamos values(13, 67812, '07/09/2012'); insert into Prestamos values(14, 92112, '10/09/2012'); insert into Prestamos values(15, 21312, '10/09/2012'); insert into Prestamos values(16, 67812, '10/09/2012'); insert into Prestamos values(17, 92112, '10/09/2012');

insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(1, 1, '16/08/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(1, 5, '16/08/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(2, 6, '16/08/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(3, 6, '17/08/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(4, 7, '17/08/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(5, 7, '17/08/2012');

Ing. Salvador Pea insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(6, 8, '20/08/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(7, 8, '21/08/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(8, 8, '25/08/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(9, 9, '26/08/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(10, 9, '26/08/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(11, 9, '26/08/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(12, 10, '12/09/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(13, 11, '12/09/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(14, 11, '15/09/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(15, 11, '15/09/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(16, 12, '15/09/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(16, 13, '15/09/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(16, 14, '15/09/2012'); insert into Detalle_Prestamo(Id_Prestamo, Id_Libro, Fecha_Devol) values(17, 24, '15/09/2012');

Despus de creada la Base de datos, pasamos a crear nuestro Pool de Conexiones:

Pool de conexiones:
Para crear nuestro pool de conexiones en netbeans: 1. Ir a la pestaa Services y en GlassFish clic derecho, seleccionar la opcin: View Domain Admin Console. 2. En el men izquierdo buscar JDBC JDBC Connections Pool. Elegir New.

Ing. Salvador Pea

3. Agregar la configuracin mostrada y luego Next:

4. Seleccionar la opcin Ping para verificar que nuestra conexin es exitosa.

5. Configurar los elementos:

6. Verificar que la configuracin fue correcta:

Ing. Salvador Pea

JDBC Resources.
1. Seleccionar la opcin JDB Resources:

2. Agregamos la configuracin:

Creacin de Sitio Web

Ing. Salvador Pea

Ing. Salvador Pea

Creacin de Entidades.
Cremos una clase (Java Class con el nombre Autor dentro de un paquete llamado modelo). Recomendacin anotar explicacin de la siguiente clase, la cual dar durante la prctica. Agregar:

Ing. Salvador Pea

Creacin de Session Bean:


1. Agregar un elemento del tipo Session Bean:

2. Configurar nombre, package y crear interaz local.

Ing. Salvador Pea 3. Agregamos los mtodos necesarios para Agregar, Editar, Eliminar, Buscar, Buscar todos los autores en el archivo creado:

Ing. Salvador Pea

Ing. Salvador Pea

Agregar unidad de persistencia


Vamos a agregar la unidad de persistencia a nuestro proyecto. Para lo cual elegimos: NEW Other Persitence Persistence Unit.

Ing. Salvador Pea

Agregar sentencia JPQL


Nos vamos a la clase Autor y agregamos la sentencia JPQL que har una bsqueda de un autor @Entity @Table @NamedQueries({@NamedQuery(name="Autor.obtenerAutor", query="SELECT a FROM Autor a ")})

Utilizar unidad de persistencia y uso de EntityManager.


Agregar dentro de autorDao: Recomendacin:Tomar apuntes de la explicacin.

Ing. Salvador Pea

Creacin del Managed Bean


Agregar un elemento Managed Bean a nuestra aplicacin.

Ing. Salvador Pea Agregamos el cdigo siguiente:

Importamos el jar a nuestro proyecto.

Ing. Salvador Pea

JSF
1. Eliminamos los archivos xhmtl creados por defecto y crearemos plantillas en la vista de nuestro proyecto:

Ing. Salvador Pea

Agregamos en el index.xhtml:

Ejecutamos nuestra aplicacin:

Estamos listos para empezar a utilizar la lgica de negocio creada hasta el momento en nuestra aplicacin en la vista:

Ing. Salvador Pea Cdigo de index.xhtml:

<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ui:composition xmlns:ui="http://java.sun.com/jsf/facelets" template="./plantilla/plantillaPrincipal.xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns="http://www.w3.org/1999/xhtml"> <ui:define name="top"> <h2> Pool de conexiones, JDBC Resources, Entidades, Unidad de Persistencia, DAO, Managed Bean, JPQL, JSF y PrimeFaces. </h2> </ui:define> <ui:define name="content"> <center> <h:form id="datos1"> <p:panelGrid columns="2" style="width:418px;" id="panelAutor"> <f:facet name="header"> Agregar un nuevo Autor </f:facet> <h:outputLabel for="id" value="ID *" /> 1.0 Transitional//EN"

Ing. Salvador Pea <p:inputText id="id" value="#{autorBean.autor.id_autor}" required="true" label="id" /> <h:outputLabel for="nombre" value="Nombre *" /> <p:inputText id="nombre" required="true" label="nombre"/> <f:facet name="footer"> <p:commandButton update="panelAutor" id="guardar" value="Guardar" icon="ui-icon-check" value="#{autorBean.autor.nombre_autor}"

style="margin:0" actionListener="#{autorBean.addAutor()}" > </p:commandButton> <p:messages id="messages" showDetail="true" /> </f:facet> </p:panelGrid> </h:form> <h:form id="datos"> <br></br> <h2 style="text-align: center">Tabla Autores</h2> <p:dataTable tableStyle="width:auto" id="tablaAutor" var="dato" value="#{autorBean.autores}"

paginator="true" {FirstPageLink} {PreviousPageLink}

rows="4"

paginatorTemplate="{CurrentPageReport}

{PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10,15" style="width:500px;"> <p:column style="width:200px;"> headerText="Codigo" filterBy="#{dato.id_autor}"

<h:outputText value="#{dato.id_autor}"></h:outputText> </p:column>

Ing. Salvador Pea <p:column headerText="Nombres" filterBy="#{dato.nombre_autor}" style="width:200px;"> sortBy="#{dato.nombre_autor}"

<h:outputText value="#{dato.nombre_autor}"> </h:outputText> </p:column>

<p:column style="width: 40px"> <h:panelGrid columns="3" styleClass="action" cellpadding="2"> <p:commandButton id="selectButton" update=":datos:display" oncomplete="editarDialog.show()" icon="ui-icon-search" title="Vista"> <f:setPropertyActionListener target="#{autorBean.autor}"></f:setPropertyActionListener> </p:commandButton> <p:commandButton icon="ui-icon-trash" action="#{autorBean.borrarAutor(dato.id_autor)}"></p:commandButton> </h:panelGrid> </p:column> ajax="false" value="#{dato}"

</p:dataTable> <p:dialog header="Editar" widgetVar="editarDialog" resizable="false" id="carDiag" showEffect="fade" hideEffect="explode" modal="true"> <h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;"> <f:facet name="header"> <h:outputText value="Valores de la fila seleccionada"></h:outputText> </f:facet> <h:outputText value="Id Autor "></h:outputText> <h:inputText bold"></h:inputText> value="#{autorBean.autor.id_autor}" style="font-weight:

Ing. Salvador Pea <h:outputText value="Nombre: "></h:outputText> <h:inputText value="#{autorBean.autor.nombre_autor}"></h:inputText> <h:commandButton actionListener="#{autorBean.actualizarAutor()}"></h:commandButton> </h:panelGrid> </p:dialog> </h:form> </center> </ui:define> value="Actualizar"

</ui:composition>

Ing. Salvador Pea

SALIDAS EN PANTALLA.
Seleccionando datos. Podemos hacer busquedas, ordenar por nombres, paginar. (Equivalente a SELECT)

Agregar un nuevo autor (Equivalente a INSERT)

Ing. Salvador Pea Editar un elemento (Equivalente a UPDATE)

Eliminar un Autor(Equivalente a Delete)

Вам также может понравиться