24
Joan Sebastián Ramírez Pérez Mapeo Objeto Relacional 2017

Orm

Embed Size (px)

Citation preview

Page 1: Orm

Joan Sebastián Ramírez Pérez

Mapeo Objeto Relacional 2017

Page 2: Orm

Agenda

❖ ¿Qué es un ORM?❖ Ventajas❖ JPA❖ Spring Data❖ Bibliografía

Page 3: Orm

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

Page 4: Orm

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

Page 5: Orm

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.

Page 6: Orm
Page 7: Orm

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.

Page 8: Orm

Implementaciones

Page 9: Orm

Vocabulario requerido

Page 10: Orm

POJO

❖ Plain Old Java Object

Page 12: Orm

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.

Page 13: Orm

JPQL

❖ Java Persistence Query Language

❖ Lenguaje usado para realizar peticiones a la base de datos.

Page 14: Orm

Named Query

❖ Consultas JPQL

Page 15: Orm

Native Query

❖ Consultas en el lenguaje nativo del motor de base de datos que es traducido a objetos

Page 16: Orm

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.

Page 17: Orm

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.

Page 18: Orm

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.

Page 19: Orm

Operaciones CRUD

❖ Crear: entityManager.persist(entity);❖ Consultar:

entityManager.persist.find(entity.class, value);❖ Actualizar: entityManager.persist.merge(entity);❖ Eliminar: entityManager.persist.remove(entity);

Page 20: Orm

Tutorial

❖ http://docs.oracle.com/javaee/6/tutorial/doc/bnbpy.html

Page 21: Orm

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

Page 22: Orm

Tomado de: http://projects.spring.io/spring-data/

Page 23: Orm

Tomado de: http://projects.spring.io/spring-data/