Está en la página 1de 20

JAVA PERSISTENCE API

Java Persistence API (JPA) proporciona un modelo de persistencia basado en POJO's para mapear bases de datos relacionales en Java. POJO son las iniciales de "Plain Old Java Object", que puede interpretarse como "Un objeto Java Plano y a la Antigua". Un POJO es una instancia de una clase que no extiende ni implementa nada en especial

La API de Persistencia de Java


Es una API standard para especificar informacin de mapeo de Objetos a Tablas Relacionales Se puede usar con o sin un Application Server de Java EE. An entity bean with container-managed persistence offers important advantages to the bean developer. First, the EJB container handles all database storage and retrieval calls. Second, the container manages the relationships between the entity beans. Este enfoque ahorra tiempo, y hace que los bean sean porttiles entre servidores de bases de datos diferentes.

Mapeo de Objetos Relacional


Proporciona la conversin automtica de tablas relacionales a objetos en memoria Algunos ejemplos son: Oracle Toplink, Toplink Essentials, Kodo y Hibernate.

FORMA BASICA DE ORM

DECLARACION DE CLASES ENTIDAD


Anotacin javax.persistence.Entity Clases pblicas Constructor sin argumentos con acceso public o protected Que se puedan extender, es decir, que no sean finales

EJEMPLO DE CLASE ENTIDAD


import java.io.Serializable; import javax.persistence.*; @Entity @Table(name = "TABLE1") public class MyEntity implements Serializable { @Id @Column(name = "ID") private int id; @Column(name = "MSG") private String message; protected MyEntity() { } public MyEntity(int id, String message) { this.id = id; this.message = message; } public int getId() { return id; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } }

@Entity class Employee{ ... }

MAPEO DE DEFAULT

El nombre de la tabla es por default igual a la de la Clase Entidad. Se puede cambiar con la anotacin @Table.
@Entity @Table(name = "Customer") public class Cliente { L }

CONCEPTO DE LLAVE PRIMARIA


Cada objeto de Clase Entidad se distingue por tener una llave primaria

La llave primaria proporciona identidad a la Clase Entidad Tpicamente son Strings o enteros, pero pueden tambin ser objetos de otras clases que corresponden a varias columnas de la tabla que representan Cada Clase Entidad debe tener una llave primaria Se marcan con la anotacin @Id Pueden ser autoincrementables.
Por ejemplo: @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "ID", nullable = false) private int id; @Entity public class Employee { @Id private int id;

RELACION ENTIDAD - TABLA

RELACIONES ENTRE ENTIDADES


One-to-One One-to-many many-to-one many-to-many

OTROS CONCEPTOS DE JPA


 Persistence Unit  Entity Manager  Persistence Context  Persistence Identity

PERSISTENCE UNIT

Coleccin de Clases Entidad representadas por un archivo PERSISTENCE.XML Define las clases entidad que van a ser administradas por el Entity Manager Limitada a un solo DataSource

PERSISTENCE CONTEXT
Se interpreta como una copia activa de la unidad de persistencia Se puede tener varios contextos de persistencia que usan la misma unidad de persistencia al mismo tiempo El contexto de persistencia: Dura lo mismo que una transaccin Tiene una API para su manejo Entity Manager

PERSISTENCE CONTEXT
Application
EntityManager MyEntity A MyEntity C MyEntity a MyEntity b MyEntity B

Persistence Context

Entities Entity state

ENTITY MANAGER

Proporciona los mtodos para controlar los eventos de un contexto de persistencia y el ciclo de vida de las clases entidad

ESTADOS DE LAS ENTIDADES

METODOS DEL ENTITY MANAGER


persist()- Insert the state of an entity into the db remove()- Delete the entity state from the db refresh()- Reload the entity state from the db merge()- Synchronize the state of detached entity with the pc find()- Execute a simple PK query createQuery()- Create query instance using dynamic JP QL createNamedQuery()- Create instance for a predefined query createNativeQuery()- Create instance for an SQL query contains()- Determine if entity is managed by pc flush()- Force synchronization of pc to database

TIPOS DE PERSISTENCIA
Relaciones : La API de Persistencia soporta el manejo de llaves forneas y tablas relacionadas. En Java, estas relaciones se modelan mediante relaciones de Herencia de Entidades Java Persistence Query Language : Es un dialecto de SQL portable utilizado para evitar dependencias de SQL en aplicaciones Java Queries de dos tipos:
NamedQueries para Persistence Query Language. NativeQueries. para queries de SQL normal.

EJEMPLO DE UN QUERY PERSISTENCE

@Entity @NamedQuery(name="FindAllOpenAuctions", query=" SELECT OBJECT(a) FROM Action AS a WHERE a.status= 'OPEN'")

Usan el Persistence Query Language en vez de SQL. Hacen la aplicacin altamente portable. No pueden utilizar caractersticas especiales de SQL.

EJEMPLO DE UN QUERY NATIVO


Query query = em.createNativeQuery("SELECT * FROM Customer",Customer.class); List customers = query.getResultList(); Query query = em.createNativeQuery("SELECT * FROM SHARESWHERE SSN = '" + customerId + "'", CustomerShare.class); List shares = query.getResultList();

Usan SQL standard. No se recomiendan porque pueden hacer la aplicacin poco portable.

También podría gustarte