1 / 53

Curso de Java y Aplicaciones Web

Curso de Java y Aplicaciones Web. Persistencia Java. Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com. Objetivos. Curso de Java y Aplicaciones Web. Java persistence api - JPA. Frameworks. Ciclo de vida de entidades. JPQL. Hibernate. Java Persistence API.

Télécharger la présentation

Curso de Java y Aplicaciones Web

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Curso de Java y Aplicaciones Web • Persistencia Java Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com

  2. Objetivos Curso de Java y Aplicaciones Web Java persistence api - JPA Frameworks Ciclo de vida de entidades JPQL Hibernate

  3. Java Persistence API Se llama “persistencia” de los objetos java a su capacidad para guardarse y recuperarse desde un medio de almacenamiento. La persistencia en Base de Datos relacionales se suele implementar mediante el desarrollo de funcionalidad específica utilizando la tecnología JDBC - Java Database Connectivityo mediante frameworks que automatizan el proceso a partir de mapeos (conocidos como ObjectRelationalMapping, ORM). JPA (Java Persistence Api) Proporciona un estándar para gestionar datos relacionales en aplicaciones Java SE o Java EE, de forma que además se simplifique el desarrollo de la persistencia de objetos java. Es una API de persistencia de POJOs (PlainOld Java Object). Es decir, objetos simples que no heredan ni implementan otras clases excepto Object.

  4. Frameworks – JPA providers

  5. Frameworks – JPA providers

  6. Motores de Bases de datos

  7. Motores de Bases de datos

  8. Motores de Bases de datos Provider F R A M E W O R K JPA

  9. JPA: Java Persistence API El mapeo objeto-relacional (es decir, la relación entre entidades Java y tablas de la base de datos, queriescon nombre, etc) se realiza mediante anotaciones en las propias clases de entidad. No se requieren ficheros descriptores XML. También pueden definirse transacciones como anotaciones JPA. @ anotación

  10. JPA: Java Persistence API @Anotaciones Mapeo Lógico Mapeo Físico Permiten describir modelo de objeto, asociaciones de clase, etc Describen esquemas físicos de base de datos, tablas, columnas, índices, etc. @OneToOne, @OneToMany, etc @Column, @JoinColumn, etc

  11. JPA: Arquitectura El siguiente diagrama muestra la relación entre los componentes principales de la arquitectura de JPA:

  12. JPA: Excepciones

  13. JPA: entidad Una entidad es un objeto de dominio de persistencia. Normalmente, una entidad representa una tabla en el modelo de datos relacional y cada instancia de esta entidad corresponde a un registro en esa tabla

  14. JPA: entidad La clase debe poseer en su encabezado la anotación javax.persistence.Entity @Entity Ningún método o variables de instancias deben ser declaradas como FINAL Los atributos persistentes de la clase deben ser declarados como PRIVATE, PROTECTED y solo deben ser accesadas por los métodos de la clase @Entity public class EmpleadoimplementsSerializable{ private Long id; //setIdgetId publicEmpleado(){ … } } Si una instancia de una entidad entra en entornos remotos ,debe implementar la interfaz SERIALIZABLE La clase debe poseer un constructor PUBLIC,PROTECTED sin argumentos La clase no debe ser declarada como FINAL

  15. JPA: entidad El estado persistente de una entidad puede ser accesible a través de variables de instancia a la entidad o bien a través de las propiedades de estilo de JavaBean (Setters and Getters). Los campos o propiedades pueden tener asociados los siguientes tipos Java: • Tipos primitivos de Java (int,long,double,etc) • java.lang.String • Otro tipo de objeto serializable, incluyendo: • Wrappers de tipos primitivos en Java (Integer,Long,Double,etc) • java.math.BigInteger • java.math.BigDecimal • java.util.Date • java.util.Calendar • java.sql.Date • java.sql.Time • java.sql.TimeStamp • User-definedserializabletypes • byte [ ] • Byte [ ] • char [ ] • Character [ ] • Tipos enumerados (Enumeration) • Otras entidades y/o colecciones de entidades

  16. JPA: entidad Campos Persistentes Propiedades Persistentes

  17. JPA: entidad • Las colecciones posibles son: • java.util.Collection • java.util.Set • java.util.List • java.util.Map Las variables genéricas de estos tipos también pueden ser utilizadas

  18. JPA: entidad - asociaciones @OneToOne Cada entidad se relaciona con una sola instancia de otra entidad. Donde la ambas se referencian por la misma llave PK. @OneToMany Una entidad, puede estar relacionada con varias instancias de otras entidades @ManyToOne Múltiples instancias de una entidad pueden estar relacionadas con una sola instancia de otra entidad. Esta multiplicidad es lo contrario a la relación uno a muchos. Usado también como si fuera una relación OneToOne @ManyToMany En este caso varias instancias de una entidad pueden relacionarse con múltiples instancias de otras entidades.

  19. JPA: entidad - asociaciones @one-to-one @Entity @Table(name=“usuarios”) public class Usuarioimplements Serializable { …//username password id @OneToOne @JoinColumn(name=“id") private Persona persona; //setter and getter } @Entity @Table(name=“personas”) public class Persona implements Serializable { …//id nombreapellidofechaNacimiento }

  20. JPA: entidad - asociaciones @OneToOne Cada entidad se relaciona con una sola instancia de otra entidad. Donde la ambas se referencian por la misma llave PK. @OneToMany Una entidad, puede estar relacionada con varias instancias de otras entidades @ManyToOne Múltiples instancias de una entidad pueden estar relacionadas con una sola instancia de otra entidad. Esta multiplicidad es lo contrario a la relación uno a muchos. Usado también como si fuera una relación OneToOne @ManyToMany En este caso varias instancias de una entidad pueden relacionarse con múltiples instancias de otras entidades.

  21. JPA: entidad - asociaciones @one-to-many @Entity @Table(name=“paises”) public class Paisimplements Serializable { … @OneToMany(mappedBy="pais",targetEntity=Ciudad.class) privateSet<Ciudad>ciudades; }

  22. JPA: entidad - asociaciones @OneToOne Cada entidad se relaciona con una sola instancia de otra entidad. Donde la ambas se referencian por la misma llave PK. @OneToMany Una entidad, puede estar relacionada con varias instancias de otras entidades @ManyToOne Múltiples instancias de una entidad pueden estar relacionadas con una sola instancia de otra entidad. Esta multiplicidad es lo contrario a la relación uno a muchos. Usado también como si fuera una relación OneToOne @ManyToMany En este caso varias instancias de una entidad pueden relacionarse con múltiples instancias de otras entidades.

  23. JPA: entidad - asociaciones @Many-to-One @Entity @Table(name=“ciudades”) public class Ciudad implements Serializable { … @ManyToOne @JoinColumn(name="fk_pais") private Pais pais; }

  24. JPA: entidad - asociaciones @OneToOne Cada entidad se relaciona con una sola instancia de otra entidad. Donde la ambas se referencian por la misma llave PK. @OneToMany Una entidad, puede estar relacionada con varias instancias de otras entidades @ManyToOne Múltiples instancias de una entidad pueden estar relacionadas con una sola instancia de otra entidad. Esta multiplicidad es lo contrario a la relación uno a muchos. Usado también como si fuera una relación OneToOne @ManyToMany En este caso varias instancias de una entidad pueden relacionarse con múltiples instancias de otras entidades.

  25. JPA: entidad - asociaciones @Many-to-Many @Entity @Table(name=“estudiantes”) public class Estudianteimplements Serializable { … @ManyToMany @JoinTable(name="estudiante_cursos", joinColumns=@JoinColumn(name="fk_estudiante"), inverseJoinColumns=@JoinColumn(name="fk_curso")) private Set<Curso>cursos; }

  26. Ciclo de vida de una entidad

  27. Operaciones con entidades

  28. Ciclo de vida de una entidad

  29. Operaciones con entidades

  30. Operaciones con entidades

  31. Operaciones con entidades flush() Sincroniza los datos de una entidad y los hace persistentes en la base de datos. refresh() Contrario al flush() ,este método vuelve a cargar los datos originales de la base de datos a la entidad. Flush() Refresh() Base de datos

  32. JPA: Arquitectura Persistance.xml javax.persistance • Persistance Unit Name • Persistance Library(Provider) • Entities • Provider settings EntityManagerFactory EntityManager EntityManager

  33. JPA – Estructura de Proyecto Archivo de configuración del motor de persistencia persistence,xml

  34. JPA – Estructura de Proyecto Tabla en base de datos Clase Persona.java

  35. JPA – Estructura de Proyecto Creación de la clase Persona.java

  36. JPA – Estructura de Proyecto Creacion del EMF (EntityManagerFactory)

  37. Java PersistenceQueryLanguage (JPQL)

  38. Java PersistenceQueryLanguage (JPQL)

  39. Java PersistenceQueryLanguage (JPQL) Clausulas : FROM Existen varias formas de simplificar una clase a la hora de realizar la consulta hql> FROM mx.model.Empleado hql> FROM Empleado Dando como resultado una colección de objetos de tipo Empleado SELECT la clausula SELECT selecciona cual(es) objeto (s)y cual (es) propiedad(es) se retornara en el resultado del query. hql> SELECT v.marca FROM Vehiculo as v hql> SELECT v.marca FROM Vehiculo v WHERE v.marcalike ‘toy%’ hql> SELECT user.persona.nombre FROM Usuario user hql> SELECT user.username,p.nombre FROM Usuario user,Persona p La anterior consulta nos retorna Object[ ] WHERE Ayuda a filtrar la lista de instancias retornadas. hql> FROM Usuario user WHERE user.username = ‘rcuello’ hql> FROM Usuario user WHERE user.persona.cedula=123456 hql> FROM Usuario user WHERE username.username IS NOT NULL ORDER BY La lista retornada por una consulta puede ser ordenada por cualquier propiedad de un objeto. hql> FROM Empleado emp ORDER BY emp.nombreasc

  40. Practica JPA Curso de Java y Aplicaciones Web Crear una aplicación java con la siguiente estructura: Persona Id Nombre Apellido Cedula fechaNacimiento

  41. Practica JPA Curso de Java y Aplicaciones Web Entidad Persona

  42. Practica JPA Curso de Java y Aplicaciones Web Persistence

  43. Practica JPA Curso de Java y Aplicaciones Web Tabla en Postgres Persona Id Nombre Apellido Cedula fechaNacimiento

  44. Practica JPA Curso de Java y Aplicaciones Web Tabla en Postgres

  45. Practica JPA Curso de Java y Aplicaciones Web Clase de prueba.

  46. Practica JPA Curso de Java y Aplicaciones Web Agregar una o más fichas de contacto a cada persona. Persona Id Nombre Apellido Cedula fechaNacimiento 1 n FichaContacto Id Telefono Calle

  47. Practica JPA Curso de Java y Aplicaciones Web Tabla ficha de Cantacto

  48. Practica JPA Curso de Java y Aplicaciones Web Clase nueva FichaContacto

  49. Practica JPA Curso de Java y Aplicaciones Web Modificar clase Persona

  50. Practica JPA Curso de Java y Aplicaciones Web Agregar la nueva entidad a Persistence

More Related