Joan Sebastián Ramírez Pérez
Mapeo Objeto
Relacional
2017
Agenda
❖ ¿Qué es un ORM?
❖ Ventajas
❖ JPA
❖ Spring Data
❖ Bibliografía
¿Qué es un ORM?
❖ ORM es Object Relational Mapping
❖ Modelo de programación que nos permite transformar
las relaciones (tablas de base de datos) en una serie de
entidades (objetos), simplificando el acceso a los datos
persistentes para el programador.
❖ Se aplica a la capa de persistencia de las aplicaciones.
Ventajas
❖ Reduce la cantidad de código, con esto se aumenta la
velocidad de desarrollo
❖ Portabilidad.
❖ Tratar las relaciones como objetos permite hablar en un
solo lenguaje desde la aplicación.
❖ Abstracción de la base de datos usada.
❖ Cumplimiento patrón Domain Model
JPA
❖ Java Persistence API
❖ API de persistencia Java que se desarrollo para el
estándar EJB 3.0.
❖ JPA establece una interface común que es
implementada por un proveedor de persistencia de
nuestra elección (TopLink, EclipseLink, Hibernate, entre
otros).
❖ Provee una especificación genérica para un ORM en
Java EE y Java SE.
Historia
❖ ORM de otros distribuidores:
❖ iBATIS 2001
❖ Hibernate 2001
❖ JDO (Java Data Object) usando JR 12 en 2002
❖ JPA 1.0: se introduce en mayo 2006 y usa el estándar JSR 220. Java
EE 5.
❖ JPA 2.0: lanzado en diciembre 2009 y trabaja con el estándar JSR
317. Java EE 6.
❖ JPA 2.1: lanzado en abril 2013 y trabaja con el estándar JSR 338.
Java EE 7.
Implementaciones
Vocabulario requerido
POJO
❖ Plain Old Java Object
Anotación
❖ Permite agregar metadatos
(datos descriptivos) al código
fuente.
❖ Para agregarlas se usa @
❖ http://docs.oracle.com/javaee/7
/api/index.html?javax/persisten
ce/package-summary.html
Entidad
❖ Objeto que va a representar
una de las entidades de la
base de datos.
❖ Son simples POJOS que
pueden tener atributos
persistimos y no persistidos.
❖ Tienen que ser serializables.
JPQL
❖ Java Persistence Query
Language
❖ Lenguaje usado para realizar
peticiones a la base de datos.
Named Query
❖ Consultas JPQL
Native Query
❖ Consultas en el lenguaje nativo del motor de base de
datos que es traducido a objetos
Entity Manager
❖ Objeto liviano que nos provee la interface
para la gestión de las entidades.
❖ Una instancia EntityManager está
asociado con un contexto de persistencia.
Un contexto de persistencia es un
conjunto de instancias de entidad en la
que para cada entidad persistente hay una
instancia de entidad única. Dentro del
contexto de persistencia, las instancias de
la entidad y de su ciclo de vida se
gestionan.
❖ La API EntityManager se utiliza para crear
y eliminar instancias persistentes, para
encontrar entidades por su clave primaria,
y para hacer consultas sobre las
entidades.
Entity Manager Factory
❖ Objeto pesado que debe abrirse
y cerrarse en cada inicio de la
aplicación. Uno por aplicación.
❖ Es único y permite gestionar
todas las entidades .Si tenemos
varias conexiones a base de
datos deberemos definir un
nuevo concepto que nos permite
clarificar que tenemos dos
EntityManagerFactories
distintos. Este concepto es el
que se conoce como
PersistenceUnit.
Persistence Unit
❖ Define el conjunto de clases
que serán gestionadas por las
instancias del EntityManager
en una aplicación.
❖ Este conjunto de clases
representa los dates que serán
contenidos en un único
espacio de almacenamiento.
Operaciones CRUD
❖ Crear: entityManager.persist(entity);
❖ Consultar: entityManager.persist.find(entity.class,
value);
❖ Actualizar: entityManager.persist.merge(entity);
❖ Eliminar: entityManager.persist.remove(entity);
Tutorial
❖ http://docs.oracle.com/javaee/6/tutorial/doc/bnbpy.html
Spring Data
❖ Módulo de Spring que a su vez
engloba un gran número de
sub-módulos cuyo objetivo es
facilitar el acceso y explotación
de datos en aplicaciones
basadas en Spring,
obteniéndose estos datos de
fuentes tan dispares como
servicios RestFUL, bases de
datos relacionales a través de
JPA, o bases de datos NoSQL
como MongoDB o Neo4J, entre
otras
Tomado de: http://projects.spring.io/spring-
data/
Tomado de: http://projects.spring.io/spring-
data/
Bibliografía
❖ https://es.slideshare.net/software_alchemy/overview-of-jpa-
java-persistence-api-v20?qid=2eada4a1-c9d0-43f6-a8c6-
b91a9bbba0f8&v=&b=&from_search=3
❖ http://docs.oracle.com/javaee/6/tutorial/doc/bnbpz.html
❖ https://jcp.org/en/jsr/detail?id=338
❖ https://www.slideshare.net/brmeyer/orm-jpa-hibernate-
overview

Orm

  • 1.
    Joan Sebastián RamírezPérez Mapeo Objeto Relacional 2017
  • 2.
    Agenda ❖ ¿Qué esun ORM? ❖ Ventajas ❖ JPA ❖ Spring Data ❖ Bibliografía
  • 3.
    ¿Qué es unORM? ❖ ORM es Object Relational Mapping ❖ Modelo de programación que nos permite transformar las relaciones (tablas de base de datos) en una serie de entidades (objetos), simplificando el acceso a los datos persistentes para el programador. ❖ Se aplica a la capa de persistencia de las aplicaciones.
  • 4.
    Ventajas ❖ Reduce lacantidad de código, con esto se aumenta la velocidad de desarrollo ❖ Portabilidad. ❖ Tratar las relaciones como objetos permite hablar en un solo lenguaje desde la aplicación. ❖ Abstracción de la base de datos usada. ❖ Cumplimiento patrón Domain Model
  • 5.
    JPA ❖ Java PersistenceAPI ❖ API de persistencia Java que se desarrollo para el estándar EJB 3.0. ❖ JPA establece una interface común que es implementada por un proveedor de persistencia de nuestra elección (TopLink, EclipseLink, Hibernate, entre otros). ❖ Provee una especificación genérica para un ORM en Java EE y Java SE.
  • 7.
    Historia ❖ ORM deotros distribuidores: ❖ iBATIS 2001 ❖ Hibernate 2001 ❖ JDO (Java Data Object) usando JR 12 en 2002 ❖ JPA 1.0: se introduce en mayo 2006 y usa el estándar JSR 220. Java EE 5. ❖ JPA 2.0: lanzado en diciembre 2009 y trabaja con el estándar JSR 317. Java EE 6. ❖ JPA 2.1: lanzado en abril 2013 y trabaja con el estándar JSR 338. Java EE 7.
  • 8.
  • 9.
  • 10.
    POJO ❖ Plain OldJava Object
  • 11.
    Anotación ❖ Permite agregarmetadatos (datos descriptivos) al código fuente. ❖ Para agregarlas se usa @ ❖ http://docs.oracle.com/javaee/7 /api/index.html?javax/persisten ce/package-summary.html
  • 12.
    Entidad ❖ Objeto queva a representar una de las entidades de la base de datos. ❖ Son simples POJOS que pueden tener atributos persistimos y no persistidos. ❖ Tienen que ser serializables.
  • 13.
    JPQL ❖ Java PersistenceQuery Language ❖ Lenguaje usado para realizar peticiones a la base de datos.
  • 14.
  • 15.
    Native Query ❖ Consultasen el lenguaje nativo del motor de base de datos que es traducido a objetos
  • 16.
    Entity Manager ❖ Objetoliviano que nos provee la interface para la gestión de las entidades. ❖ Una instancia EntityManager está asociado con un contexto de persistencia. Un contexto de persistencia es un conjunto de instancias de entidad en la que para cada entidad persistente hay una instancia de entidad única. Dentro del contexto de persistencia, las instancias de la entidad y de su ciclo de vida se gestionan. ❖ La API EntityManager se utiliza para crear y eliminar instancias persistentes, para encontrar entidades por su clave primaria, y para hacer consultas sobre las entidades.
  • 17.
    Entity Manager Factory ❖Objeto pesado que debe abrirse y cerrarse en cada inicio de la aplicación. Uno por aplicación. ❖ Es único y permite gestionar todas las entidades .Si tenemos varias conexiones a base de datos deberemos definir un nuevo concepto que nos permite clarificar que tenemos dos EntityManagerFactories distintos. Este concepto es el que se conoce como PersistenceUnit.
  • 18.
    Persistence Unit ❖ Defineel conjunto de clases que serán gestionadas por las instancias del EntityManager en una aplicación. ❖ Este conjunto de clases representa los dates que serán contenidos en un único espacio de almacenamiento.
  • 19.
    Operaciones CRUD ❖ Crear:entityManager.persist(entity); ❖ Consultar: entityManager.persist.find(entity.class, value); ❖ Actualizar: entityManager.persist.merge(entity); ❖ Eliminar: entityManager.persist.remove(entity);
  • 20.
  • 21.
    Spring Data ❖ Módulode Spring que a su vez engloba un gran número de sub-módulos cuyo objetivo es facilitar el acceso y explotación de datos en aplicaciones basadas en Spring, obteniéndose estos datos de fuentes tan dispares como servicios RestFUL, bases de datos relacionales a través de JPA, o bases de datos NoSQL como MongoDB o Neo4J, entre otras
  • 22.
  • 23.
  • 24.