Anda di halaman 1dari 16

UNIVERSIDADDELVALLE

FACULTADDEINGENIERA


ESCUELADEINGENIERADESISTEMASY
COMPUTACIN



DESARROLLODESOFTWAREII
Febrero-Juniode2017



TALLERNo.4
ORM(JPA)




JhoanSebastianFranco-1330071
SebastianCastao-1510009
CarlosTello-1527707
EdwinMontero-1044668

OBJETIVOGENERAL

El objetivo general escomprenderdeformabsicaelfuncionamientode


laespecificacinJPA eimplementarlaparalagestindeunproyectoen
javaconNetbeans.

INSTRUCCIONESDEENTREGA

Eltallersepodrrealizarenlosgruposdelproyecto
Lafechalmitedeentregaeselda11/05/2017ala1:00PM
Se deben entregar los proyectos de NetBeans en los que
desarrollelejerciciopropuesto
Laentregaserporelcampusvirtual.

INTRODUCCIN

Java Persistence API (JPA) proporciona un modelo de persistencia


basado en POJO"s para mapear bases de datos relacionales en Java.
Tambin puede utilizarse directamente en aplicaciones web y
aplicaciones clientes, como se har en este taller; incluso fuera de la
plataformaJavaEE,porejemplo,enaplicacionesJavaSE.

EspertinenteaclararqueJPAesunaespecificacin,esdecirqueJPAse
desarrolla como un estndar que especifica la forma de manejar la
persistenciaobjeto-relacional.

Las implementaciones de JPA son los llamados framework ORM.


Object-Relational mappingporsussiglaseningls,oloqueeslomismo,
mapeo de objeto-relacional. ORM es un modelo de programacin que
consiste en la transformacin de las tablas de una base de datos, en
una serie de entidades que simplifiquen las tareas bsicas de acceso a
losdatosparaelprogramador.

JPAconNETBEANS

Netbeans es un IDE que implementa la especificacin JPA de forma


estndar por mediodesupaquetedepersistenciapersistence.Alutilizar
JPA con persistence estamos utilizando la implementacin estndar de
JPA, esta forma implementar JPA se queda muy corta si la
comparamosconlaimplementacinORM.

Al comparar JPA y un ORM como Hibernate o EclipseLink vemos quela


implementacin estndar de JPA es menos robusta que un ORM y
adems un ORM contiene la implementacin JPA. Por lo que utilizar la
implementacin estndar de JPA o un ORM depende mucho de las
necesidadesdelproyecto.

Para ms informacin acerca de la especificacin JPA y las


implementacionesdelamismaconsusventajasydesventajasingresaa
lossiguientesenlaces.

Enlace1:https://www.genbetadev.com/frameworks/jpa-vs-hibernate
Enlace2:http://javabeat.net/jpa-vs-hibernate/

A continuacin se proceder a desarrollarunproyectoenjavautilizando


laespecificacinJPAyeldriverJDBCdepostgres.

1. ConfiguracindelaBasededatos:

Lo primero que debemos hacer es crear la base de datos con la cual


vamos a trabajar. Para efectos del ejemplo utilizaremos el archivo
bd.sql basado en postgresql que se encuentra adjunto en el campus
virtual.LoprimeroesabrirPgadminyejecutarelarchivosql.

NOTA: Para generar un cdigo sql rpidamente puedes utilizar la


siguiente herramienta : https://www.vertabelo.com/. Vertabelo permite
la creacin de bases de datos en mysql o postgresql. (Si se registran
conelcorreodeunivalleobtienenunamembresadeestudiante)


Imagen1:Creacindelabasededatos

Tambinsepuedeejecutarelarchivosqldesdeconsola:

- sudo su - postgres
- psql -f ruta_archivo.sql mydb

2.ProcedemosacrearelproyectoenNETBEANS

Abrimos nuestro IDE y creamos un nuevo proyecto con el nombre de


PruebaJPA.

Imagen2:CreacindelproyectojavaenNETBEANS

Imagen3:NombramoselproyectocomoPruebaJPA
3.Configuracindelabasededatosdelproyecto.

Debemosincluirantesquenadaeldriverjdbcdepostgres


Imagen4:AgregarelJDBCdepostgresql.Linkdedescarga:https://jdbc.postgresql.org/download.html


Imagen5:incluimoselarchivodescargado

Procedemos a configurar los parmetros de conexin de la base de


datos que hemos creado. Para eso debemos crear una unidad de
persistencia del proyecto. New -> Other -> Persistence -> Unit
Persistence


Imagen6:Configurarelarchivodeconexinalabase


Imagen7:ConfiguracindelaBasedeDatos

Nota: En Persistence Library debemos escoger Hibernate. Luego New


DatabaseConnection...


Imagen8:Configuracindelabasededatos,utilizamoslalibreradehibernate.
UtilizamoselDriverdePostgresql->Next.


Imagen9:Utilizamospostgresqlparaesteejemplo


Imagen10:Configurarparmetrosdeconexin.Luegosedebetestearlaconexin.

Una vez realizada nuestra unidad de persistencia debemos tener claro


cul es su nombre porque ser necesario incluirla en elmaindenuestra
aplicacin. El siguiente paso es crear una entidad persistente, es decir,
mapearunatablarelacionalensurepresentacindeobjeto.

Para esto NeatBeans tienen un herramienta muy til. Vamos a New ->
Other->Persistence->EntityClassesFromDataBase


Imagen11:Creacindeunaentidadpersistente


Imagen12:Creacindeunaentidadpersistente

Seleccionamoslasdostablasquequeremosmapearconadd.


Imagen13:Seleccionamoslasdostablascreadas

Debemos crear las Entidades con las anotaciones por lo que


verificamos que estn chuleadas las casillas de JPA annotations and
AnnotationsforPersistence.


Imagen14:Seleccionamossiguienteyluegofinalizar

Creacindeloscontroladoresparalasentidades

Los controladores para las entidades son los que se encargan de


gestionar las diferentes operaciones que unaentidadpuederealizar,por
ejemplo un mtodo create gestiona la creacin de una nueva entidad y
surespectivosaveenlabasededatos.

Para crear los controladores de las entidades debemos hacer click


derecho en el proyecto -> new -> Other -> Persistence -> JPA Controller
Classes->AddAll->finish


Imagen15:Siguiente->AddAll->finish

Alfinalizarlaestructuradenuestroproyectodeberaseralgoas:


Imagen16:Laestructuradenuestroproyecto

Antes de pasar a la implementacin debemos informarle a nuestra


unidad de persistencia las entidades con las que vamos a trabajar y la
estrategia que vamos a seguir, por lo que debemos hacer dobleclicken
nuestro archivo persistence.xml y aadirlasclasesmapeadas(Personal
yTipoDocumento).

Tambin debemos asegurarnos que la casilla TableGenerationStrategy


tenga habilitada la casilla none. Esto quiere decir que no seguiremos
ninguna estrategia para la generacin de tablas puesto que ya tenemos
una base de datos debidamente diseada. La opcin Create es muy
til cuando necesitamos crear las tablas que hemos diseado en forma
deentidadesanuestrabasededatos.


Imagen17:Aadirlasclasesquequeremosutilizaryseteamoslaestrategia

ConfiguracindelMain

Debido a que los controladores reciben un EntityManagerFactory para


crear el EntityManager que se encarga de realizar las transaccionesala
base de datos, y este a su vez utiliza la librera j andex que no se
encuentra en NeatBeans, debemosdescargareljareincluirloennuestro
proyecto.AltrabajarconHibernatenosernecesario.

DescargadeJandexaqu:
http://central.maven.org/maven2/org/jboss/jandex/2.0.0.Final/jandex-2
.0.0.Final.jar

Para mayor informacin del bugquepresentaNeatBeansaltrabajarcon


persistenceJPAver:
https://netbeans.org/bugzilla/show_bug.cgi?id=256812

Para incluir el Jandex en el proyecto se sigue el mismo procedimiento


queutilizamosalincluireldriverJBDCdelpostgresql.

Luego de esto debemos crear el EntityManagerFactory que le


pasaremos al controlador de Personal para que gestione las
transacciones.Asquemanosalaobra.



Imagen18:Editandoelmaindenuestroproyecto

Sinopuedesverconclaridadelcdigopuedesingresaralrepogit:
https://github.com/jhonsfran1165/PruebaJPA.git

Ejecutamos el proyecto y revisamos nuestra base de datos para


confirmarquelaoperacinfueunxito.


Imagen19:Registroguardadoexitosamente

TallerJPA

Debe crear una aplicacin CRUD (Create, Read, Update, Delete) con JPA
y Swing para la tabla Personal. Debe tener en cuenta el manejo de
excepcionesylasrelacionesentrePersonalyTipoDocumento.

Anda mungkin juga menyukai