Object Relational Mapping - ORM Tutor: Ing. Juan E. Talavera Horn 2010.

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
2010Ing. de Sistemas II Persistencia en EJB3 Pasos para crear entity beans.
JAVA PERSISTENCE API (JPA) - Relaciones
JEE Entity Enterprise Beans Herencia. 2009Ing. de Sistemas II2 Herencia y Polimorfismo en Entity Beans Los Entity Beans son clases Java comunes que soportan.
Hibernate Annotations
Composición de Una Tabla de Números a Partir de Una Lista de Números Separada por Comas en Transact SQL Leonel Morales Díaz Ingeniería Simple
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Persistencia: Entity Beans
Single Table Inheritance
Polymorphics Associations Seguimos Reutilizando Tablas por Nelson Rojas Núñez
Delete en tablas: titulacion. Puedo eliminar cualquier fila de una tabla? Restriccion de integridad: Restrict/Cascade.
Query Direcciones SELECT Nombre, Apellido, Ciudad FROM Direcciones;
Esquema de Mapeo de Base de Datos Relacionales a Objetos
AJAX CI-2413 Desarrollo de Aplicaciones para Internet.
Bases de Datos Espaciales SPATIAL QUERY LANGUAGES
Combinación de varias tablas. Introducción Uso de alias en los nombres de tablas Combinación de datos de varias tablas Combinación de varios conjuntos.
Java Web Services Developer JAX-WS
SQL Server 2005 ADO.NET Javier Fernández Rodríguez Noviembre 2005, Sevilla Javier Fernández Rodríguez Noviembre 2005, Sevilla.
Programación con OpenMP* Intel Software College. Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or.
¿Cómo armar el entorno de desarrollo para una mayor productividad?
JAVA PERSISTENCE API (jpa)
INTEGRIDAD, INTEGRIDAD REFERENCIAL
Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar las variables.
Nombre:Nº de Control: María del Carmen Raygoza Hernández Judith Itzel Requejo Hernández
CONSTRUCCIÓN Y ARQUITECTURA DEL SOFTWARE
Procedimientos Almacenados y Disparadores
Programación Concurrente en Java
SQL Base de Datos LENGUAJES DE CONSULTA AR y CR no pueden ser tomados como base para implementar porque: Poseen sintaxis compleja No permiten.
Unidad 6: EJB 3.0 David Rodríguez 1.
Consideraciones. Un Bean public class AddressBean { //properties private String street; private String city; private String state; private String zip;
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.
Monitor de Temperatura. OBJETIVO Monitoreo de Temperatura en Salas de Computo Elaborar graficas de comportamiento Envío de Alertas.
Lenguaje de consulta de Hibernate
SOA conference. Qué es WCF Fundamentos de la Arquitectura WCF Adaptadores BizTalk WCF Novedades en BizTalk Demo.
Oracle y Java Continuación *
13/01/08Seminario de Bases de Datos1 Oracle y Java * * Tomado del curso de Francisco Moreno.
Herramientas de Oracle para realizar Tuning de Sentencias SQL
Genéricos en Java Jaime Ramírez, Ángel Lucas González
BASES DE DATOS Ejercicio No. 6. Ejecutar las siguientes sentencias SELECT nombre, ueldo FROM user.tabla_profesor WHERE filtro 1 UPDATE user.tabla_profesor.
JAVA Persistence API (JPA)
Marzo 2007 Lenguajes Visuales Clase III.
Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA 2006.
Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.
Lenguajes de Programación Tema 4. Paradigma Orientado a Objetos Java 1.5 Pedro García López
Julián Enrique Verdezoto Celi. Conceptos Generales LINQ en objetosDEMO LINQ y XMLDEMO LINQ y SQLDEMO.
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.
Java Persistance API JPA.
Middleware Java 2 Enterprise Edition
Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas.
Inicio Java: Algunas utilidades. Inicio Temporización En ingeniería nos encontramos con tareas que deben repetirse de forma periódica. Son tareas temporizadas.
Colecciones.
Programación orientada a objetos
SQL Lenguaje de consulta estructurado
El lenguaje de programación Java
ESTRUCTURA DE DATOS EN JAVA
Integridad Referencial 1. Integridad referencial 2.
Frameworks de Persistencia Java Prof. Ing. Esteban Ramírez
Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez Persistencia Java.
Softlogia S.R.L. Formación de Recursos Humanos Hibernate Core Instructor: Martin R. Baspineiro.
Softlogia S.R.L. Formación de Recursos Humanos Hibernate Core Instructor: Martin R. Baspineiro.
UNIDAD IV. Diseño de Base de Datos Relacionales
Opciones del Package Manager. - Create new package: Me permite crear un nuevo paquete - Write new specification files for all installed, locally generated.
Conceptualización.
Como hacer un primer Mapeo en NetBeans
Tipos de datos en MYSQL YEAR: Año. “YYYY” o “YY”
UN EJEMPLO DE LECTURA CONSISTENTE EN INNODB
Spring Framework.
Construcción de elementos de Software 4 MSc. Oscar Mauricio Salazar Ospina MSc Juan Camilo Jaramillo Alzate 15/05/2019Programación distribuida y paralela1.
Transcripción de la presentación:

Object Relational Mapping - ORM Tutor: Ing. Juan E. Talavera Horn 2010

ORM - Concepto  Conversión automática de objetos de aplicación a filas en tablas relacionales y viceversa

ORM - Objetivos  Reducir la codificación de código SQL trivial para mantenimiento de objetos en la base de datos  Facilitar la navegación entre datos y sus relaciones en término de objetos de aplicación

ORM - Frameworks  Hibernate - Java  TopLink - Java  Enterprise Java Beans - Java  Zend – php  NHibernate –.NET  Rails – Ruby

Hibernate - Introducción package events; import java.util.Date; public class Event { private Long id; private String title; private Date date; public Event() {} public Long getId() { return id; } private void setId(Long id) { this.id = id; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } POJO: Plain Old Java Object

Configuración de mapeo <property name="date" type="timestamp" column="EVENT_DATE"/>

Crear y almacenar nuevo objeto Session session = HibernateUtil.getSessionFactory().getCurrentSession(); //Iniciar transacción session.beginTransaction(); Event theEvent = new Event(); theEvent.setTitle(title); theEvent.setDate(theDate); session.save(theEvent); //Confirmar transacción session.getTransaction().commit();

Obtener lista de objetos desde BD //Método en clase EventManager private List listEvents() { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); List result = session.createQuery("from Event").list(); return result; } //Desde algún cliente de EventManager List events = mgr.listEvents(); for (int i = 0; i < events.size(); i++) { Event theEvent = (Event) events.get(i); System.out.println("Event: " + theEvent.getTitle() + " Time: " + theEvent.getDate()); }

Mapear asociaciones package events; public class Person { private Long id; private int age; private String firstname; private String lastname; private Set events = new HashSet(); public Person() {} // getters y setters para todos los atributos }

<many-to-many column="EVENT_ID" class="events.Event"/> Mapear asociaciones

Accediendo a las relaciones private void addPersonToEvent(Long personId, Long eventId) { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Person aPerson = (Person) session.load(Person.class, personId); Event anEvent = (Event) session.load(Event.class, eventId); aPerson.getEvents().add(anEvent); session.getTransaction().commit(); }

Annotations  Sustituir configuración XML por annotations  Annotations estándares de EJB 3.0  Annotations específicos de Hibernate  POJO + Annotations EJB 3.0 = Entity Java Beans  Hibernate cumple con especificación JPA  JPA puede ejecutarse fuera de contenedor EJB, ejemplo Apache Tomcat

POJO + public class Flight implements Serializable { Long public Long getId() { return id; } public void setId(Long id) { this.id = id; } } Anotaciones sobre los getters o declaraci ó n de los atributos

@Table(…) public class Sky implements Serializable {... }

Optimistic public class Flight implements Serializable { private public Integer getVersion() { return version; } EJB 3 requiere soporte para bloqueo optimista, pero no así para bloqueo pesimista.

Mapeo de propiedades simples public transient int counter; //transient property private String firstname; //persistent String getLengthInMeter() {... } //transient property String getName() {... } // persistent int getLength() {... } // persistent java.util.Date getDepartureTime() {... } // persistent property

public class Flight implements Serializable = "flight_name", nullable = false, length=50) public String getName() {... }

“ SEQ_STORE",sequenceName= “ SQ_IDSTORE") public Integer getId() {... } AUTO: Uno de los siguientes dependiendo de la BD TABLE: Valor almacenado en una tabla IDENTITY: Auto incrementado por la BD (si soporta) SEQUENCE: A partir de secuencia

Claves primarias compuestas  Anotar la propiedad y la clase de la clave  Anotar la propiedad  Anotar la clase y anotar cada propiedad que conforma la clase

Anotar la propiedad y la clase de la public class DetalleFactura DetalleFacturaKey id;... public class DetalleFacturaKey { private Integer idCabeceraFactura; private Integer nroDetalle; }

Anotar la public class DetalleFactura DetalleFacturaKey id;... } public class DetalleFacturaKey { private Integer idCabeceraFactura; private Integer nroDetalle; }

Anotar la clase y anotar cada propiedad que conforma la @IdClass(DetalleFacturaKey.class) public class DetalleFactura private Integer Integer nroDetalle;... public class DetalleFacturaKey { private Integer idCabeceraFactura; private Integer nroDetalle; }

Asociación 1 a 1  Las entidades asociadas tienen las mismas claves primarias  Una de las entidades tiene un foreign key a la otra  Existe una tabla intermedia que mantiene la relación entre las 2 entidades

Las entidades asociadas tienen las mismas claves public class Body public Long getId() { return id; = public Heart getHeart() { return heart; }... public class Heart public Long getId() {...} }

Una de las entidades tiene un foreign key a la public class Customer = public Passport getPassport() {}... public class Passport = "passport") public Customer getOwner() {}... } En relación bidireccional, owner class es la encargada del mantenimiento de la relación

Tabla intermedia mantiene la relación entre las 2 public class Customer implements Serializable = = "CustomerPassports", joinColumns inverseJoinColumns public Passport getPassport() {}... public class Passport implements Serializable = "passport") public Customer getOwner() {}... }

Asociación muchos a public class Flight implements Serializable public Company getCompany() { return company; }... }

public class Company implements Serializable { public String getName() { … “ company") public List getFlights() { return flights; }... }

Invertir el “owner” de la public class public Set getSoldiers() {}... public class insertable=false, updatable=false) public Troop getTroop() {}... }

Foreign key public class Parent implements Serializable public ParentPk id; public referencedColumnName = referencedColumnName = referencedColumnName = "firstName") }) public Set children;... }

Named Query select p from query="select n from Night n where n.date >= :date") public class Night {... } public class MyDao { doStuff() { Query q = s.getNamedQuery("night.moreRecentThan"); q.setDate( "date", aMonthAgo ); List results = q.list();... }... }

Criteria Query List cats = sess.createCriteria(Cat.class).add( Restrictions.like("name", "Fritz%") ).add( Restrictions.between("weight", minWeight, maxWeight) ).list(); List cats = sess.createCriteria(Cat.class).add( Restrictions.like("name", "Fritz%") ).add( Restrictions.or( Restrictions.eq( "age", new Integer(0) ), Restrictions.isNull("age") ) ).list();

Conceptos de la plataforma  Session Factory  Session  Persistent objects  Transient and detached objects  Transaction  Connection Provider  Transaction Factory  First Level Cache  Second Level Cache