La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez Persistencia Java.

Presentaciones similares


Presentación del tema: "Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez Persistencia Java."— Transcripción de la presentación:

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

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

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 Connectivity o mediante frameworks que automatizan el proceso a partir de mapeos (conocidos como Object Relational Mapping, 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 (Plain Old Java Object). Es decir, objetos simples que no heredan ni implementan otras clases excepto Object. 3

4 Frameworks – JPA providers 4

5 5

6 Motores de Bases de datos 6

7 7

8 FRAMEWORK JPAFRAMEWORK Provider 8

9 JPA: Java Persistence API El mapeo objeto-relacional (es decir, la relación entre entidades Java y tablas de la base de datos, queries con 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 9

10 JPA: Java Persistence API @Anotaciones Mapeo Lógico Mapeo Físico 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 10

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

12 JPA: Excepciones 12

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 13

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

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-defined serializable types byte [ ] Byte [ ] char [ ] Character [ ] Tipos enumerados (Enumeration) Otras entidades y/o colecciones de entidades 15

16 JPA: entidad Campos Persistentes Propiedades Persistentes 16

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 17

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. 18

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

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. 20

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

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. 22

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

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. 24

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

26 Ciclo de vida de una entidad 26

27 Operaciones con entidades 27

28 28 Ciclo de vida de una entidad

29 Operaciones con entidades 29

30 Operaciones con entidades 30

31 Operaciones con entidades Base de datos Flush() Refresh() 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. 31

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

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

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

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

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

37 Java Persistence Query Language (JPQL) 37

38 38 Java Persistence Query Language (JPQL)

39 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.marca like ‘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.nombre asc 39

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. FichaContacto Id Telefono Calle Persona Id Nombre Apellido Cedula fechaNacimiento 1 n

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

51 Practica JPA Curso de Java y Aplicaciones Web Clase de prueba Creamos la persona. Creamos la ficha 1 para Persona. Creamos la ficha 2 para Persona.

52 Práctica 2  Mapear la clase curso y profesor como entidades.  Crear tablas en el Postgres para almacenar los valores.  Agregar un nuevo menú a GestionAcademicaWeb3 de “Guardar” para persistir los valores en BD. Curso de Java y Aplicaciones Web

53 Curso de Java y Aplicaciones Web. Ing. Esteban Ramírez edre@gmail.com


Descargar ppt "Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez Persistencia Java."

Presentaciones similares


Anuncios Google