Java Persistance API JPA.

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

2010Ing. de Sistemas II Persistencia en EJB3 Pasos para crear entity beans.
JEE Introducción a Java Enterprise Edition (JEE) y el modelo Enterprise Java Beans (EJB)
JEE Entity Enterprise Beans Herencia. 2009Ing. de Sistemas II2 Herencia y Polimorfismo en Entity Beans Los Entity Beans son clases Java comunes que soportan.
Las aplicaciones requieren datos persistentes
Programación orientada a objetos en Visual Basic .NET
Acceso a Bases de Datos con Java
Empaquetado de Entity Beans
Curso de java básico (scjp)
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
BASE DE DATOS OBJETO RELACIONAL
Herencia en C#.
Lenguaje de programación Java
JAVA PERSISTENCE API (jpa)
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Conceptos más avanzados de Programación Orientada a Objetos Programación 2005 Licenciatura de Lingüística y Nuevas Tecnologías.
Unidad 6: EJB 3.0 David Rodríguez 1.
Inner classes CAPITULO 8.
Teoría de los lenguajes Proyecto SIGU Equipo Nº3 Universidad Argentina J. F. Kennedy Sede: Don Bosco Integrantes: Irene Arias Fernández Mariana Pacheco.
Lenguaje de consulta de Hibernate
Características Objeto Relacionales en Oracle
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
JAVA Persistence API (JPA)
Unidad 3 Lenguaje SQL Contenidos Que es SQL ? Estructura de SQL
Programación Orientada a Objetos en Java
Marzo 2007 Lenguajes Visuales Clase III.
4.3. Privilegios de usuarios
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
HERENCIA.
Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Análisis y Diseño Orientado a Objetos UML: Lenguaje de Modelamiento Unificado Toma de Requerimientos.
Tema 3 J2EE Java Database Connectivity Temas Selectos de Cómputo Grupo 912.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Modificadores.
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
Abstracción de los datos y Orientación a Objeto Clase 13.
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Técnicas avanzadas de programación Interfaces
Persistencia de Objetos. Definicion Persistencia : El la capacidad de un objecto to continuar existiendo despues que su creador (programa que crea este)
SCJP Sun Certified Programmer for Java 6
Bases de Datos Relacionales
SQL Básico Prof. Nelliud D. Torres.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
ESTRUCTURA DE DATOS EN JAVA
Patrones Creacionales
Herramientas de polimorfismo y herencia en C++
Mapeo Objeto – Relacional JPA – Java Persistence Api
Enterprise Java Beans. EJBs Beans gestionados por un contenedor del servidor de aplicaciones para gestionar el acceso a recursos (bases de datos, colas.
Frameworks de Persistencia Java Prof. Ing. Esteban Ramírez
Introducción a Bases de Datos en Microsoft Access Programación de Computadoras 2 Sección: P.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Presentado por: PABLO ANDRES DIAZ SAIN HASSAM CAICEDO
Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez Persistencia Java.
Lenguaje Estructurado de Consulta
CONCEPTOS.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
Acceso a Datos Erick López Ovando Licenciado en Informática.
Programación Orientada a Objetos: CLASES Y OBJETOS
Clases “ Es una Abstracción de un elemento del mundo real ”
Querys a bases de datos con MS ACCESS. DEFINAMOS LOS TERMINOS: DML=Lenguaje de manipulación de datos Las sentencias DML permiten generar consultas para.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Softlogia S.R.L. Formación de Recursos Humanos Hibernate Core Instructor: Martin R. Baspineiro.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Java Persistance API JPA

¿Qué es una Entidad?

¿Qué es una entidad? Plain Old Java Object(POJO) Se crean por medio de la palabra reservada new No se requieren interfaces Tiene una identidad de persistencia Puede tener estados tanto persistentes como no persistentes Tipos Simples (ej. primitivos, enums ..) Estados no persistentes (transient o @Transient) Permite herencia entre entidades Serializable; usable como objetos separados en otras capas No necesitan objetos de transferencia de datos

Ejemplo de Entidad @Entity public class Customer implements Serializable { @Id protected Long id; protected String name; @Embedded protected Address address; protected PreferredStatus status; @Transient protected int orderCount; public Customer() {} public Long getId() {return id;} protected void setId(Long id) {this.id = id;} public String getName() {return name;} public void setName(String name) {this.name = name;} … }

Llave primaria (Pk - Id) de la Entidad Cada Entidad tiene una llave primaria (identity) de persistencia. Puede corresponder a un tipo simple @EmbeddedId – campo simple/propiedad en la clase entidad @IdClass – corresponde a muchos campos Id en la clase entidad Debe ser definido en la raíz de la jerarquía d eal entidad o clase padre mapeada

Modelo de Programación

Modelo de Programación de Persistencia de Java La entidad es un POJO (no necesita implementar un EntityBean) Uso de Annotations para denotar un POJO como una entidad (en lugar de un descriptor) // @Entity is an annotation // It annotates Employee POJO class to be Entity @Entity public class Employee { // Persistent/transient fields // Property accessor methods // Persistence logic methods }

Ejemplo de Entidad de Persistencia (1) Annotation  denota que es Entidad @Entity public class Customer { private Long id; private String name; private Address address; private Collection<Order> orders = new HashSet(); public Customer() {} @Id public Long getID() { return id; } protected void setID (Long id) { this.id = id; ... @Id denota la llave primaria Métodos accesores para acceder el estado

Ejemplo de Entidad de Persistencia (2) ... // Relationship between Customer and Orders @OneToMany public Collection<Order> getOrders() { return orders; } public void setOrders(Collection<Order> orders) { this.orders = orders; // Other business methods

Código de Cliente: De Java SE Client public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("EmployeeService); EntityManager em = emf.createEntityManager(); Collection emps = em.createQuery("SELECT e FROM Employee e") .getResultList(); // More codes

Contexto de Persistencia y Manejador de Entidad Persistance Context & Entity Manager (EM)

Contexto de Persistencia y Manejador de Entidad Representa un conjunto de instancias de entidad administradas por la capa de persistencia en tiempo de ejecución “Una instancia de Entidad es un estado administrado” significa que la instancia está contenida en un contexto de persistencia Inclusión o exclusión de una entidad en/de el contexto de persistencia determina la salida de cualquier operación de persistencia en él No es directamente accesible para la aplicación es accedido indirectamente a través del EM – el tipo de EM determina cómo un contexto de persistencia es creado y borrado Manejador de Entidad (EM) Realiza operaciones del ciclo de vida en entidades – administra el contexto de persistencia

Operaciones de ciclo de vida de una Entidad

Administrador de Entidad (EM) En funcionalidad es similar a el Hibernate Session, JDO PErsistanceManajer, etc Controla el ciclo de vida de las entidades persist() – inserta una entidad a la BD remove() – remueve una entidad de la BD merge() – sincroniza el estado de entidades separadas refresh() – refresca el estado desde la BD

Operación de Persistencia public Order createNewOrder(Customer customer) { Order order = new Order(customer); // Transitions new instances to managed. On the // next flush or commit, the newly persisted // instances will be inserted into the datastore. entityManager.persist(order); return order; }

Operaciones de Búsqueda y Eliminación public void removeOrder(Long orderId) { Order order = entityManager.find(Order.class, orderId); // The instances will be deleted from the datastore // on the next flush or commit. Accessing a // removed entity has undefined results. entityManager.remove(order); }

Operación de Merge public OrderLine updateOrderLine(OrderLine orderLine) { // The merge method returns a managed copy of // the given detached entity. Changes made to the // persistent state of the detached entity are // applied to this managed instance. return entityManager.merge(orderLine); }

Transacciones

Tipos de Transacciones Dos tipos de transacciones Transacciones de recurso local (Resource - local) JTA (Java Transaction API) Participan múltiples recursos Transacciones XA distribuidas El tipo de transacción es definido en la unidad de persistencia (archivo persistance.xml) El valor default es JTA para JavaEE y RESOURCE_LOCAL para Java SE EM administrado por un contendor utiliza transacciones de JTA Propagación del contexto de persistencia con transacciones de JTA es gestionado por el contenedor – compartiendo el mismo contexto de persistencia entre múltiples EMs

Transacciones Y Contexto de Persistencia Las transacciones definen cuando las entidades nuevas, modificadas, o borradas so sincronizadas con la base de datos La creación y uso del contexto de persistencia es determinado por el tipo de Transacción (Resource-local o JTA) y el atributo de Transacción (REQUIRED o ..)

Mapeo a O/R

Mapeo a O/R Conjunto de annotations extenso definido por el mapeo Relaciones Joins Tablas y columnas de BD Generadores de secuencias de BD Especificadas utilizando Annotations en el código Archivo de mapeo por separado

Mapeos Simples @Entity(access=FIELD) public class Customer { @Id int id; String name; @Column(name=“CREDIT”) int c_rating; @Lob Image photo; } CUSTOMER ID NAME CREDIT PHOTO

Ejemplo de Mapeo O/R @Entity @Table(name="EMPLOYEE", schema="EMPLOYEE_SCHEMA") uniqueConstraints= {@UniqueConstraint(columnNames={"EMP_ID", "EMP_NAME"})} public class EMPLOYEE { ... @Column(name="NAME", nullable=false, length=30) public String getName() { return name; } }

Relaciones de Entidades

Relaciones de Entidades Modela asociación entre entidades Soporta relaciones tanto unidireccionales como bidireccionales Relación unidireccional: Entidad A hace referencia a B, pero B no hace referencia a A Cardinalidades Uno a uno Uno a muchos Muchos a uno Muchos a muchos

Relaciones de Entidades: Ejemplo Muchos a Muchos @Entity public class Project { private Collection<Employee> employees; @ManyToMany public Collection<Employee> getEmployees() { return employees; } public void setEmployees(Collection<Employee> employees) { this.employees = employees; ...

Comportamiento en Cascada “Cascading” es utilizado para propagar el efecto de una operación en todas las entidades relacionadas Cascade = PERSIST Cascade = REMOVE Cascade = MERGE Cascade = REFRESH Cascade = ALL

QUERY

Mejora a EJB-QL Soporta queries dinámicos, además de queries prefabricados o queries estáticos Queries polimórficos Operaciones de actualización y eliminación en grandes bloques Joins Agrupaciones Subqueries Funciones de SQL Adicionales UPPER, LOWER, TRIM, CURRENT_DATE

Queries Queries Estáticos Queries Dinámicos Definidos con metadatos de lenguaje de java o XML Annotations: @NamedQuery, @NamedNativeQuery Queries Dinámicos El query se especifica en tiempo de ejecución Utiliza Lenguaje de Query de Persistencia de Java o SQL Parámetros nombrados o posicionados El EM es fábrica de objetos de query createNamedQuery, createQuery, createNativeQuery Métodos de query para contolar resultados máximos, paginación, modo flush

Queries Dinámicos // Build and execute queries dynamically at runtime. public List findWithName (String name) { return em.CreateQuery ( “SELECT c FROM Customer c ” + “WHERE c.name LIKE :custName”) .setParameter(“custName”, name) .setMaxResults(10) .getResultList(); }

Named Query // Named queries are a useful way to create reusable queries @NamedQuery( name=“findCustomersByName”, queryString=“SELECT c FROM Customer c ” + “WHERE c.name LIKE :custName” ) @PersistenceContext public EntityManager em; List customers = em.createNamedQuery(“findCustomersByName”). setParameter(“custName”, “smith”).getResultList();

Referencias Java Persistence API: Simplifying Persistence Sang Shin Java Technology Evangelist Sun Microsystems, Inc.