Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

JPA

Programacion orientada a objetos - Cenfotec
by

Jerson Chinchilla

on 31 August 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of JPA

Definición JPA
Java Persistence API (JPA) proporciona un modelo de persistencia basado en POJO's para mapear bases de datos relacionales en Java. La persistencia de Java fue desarrollada por expertos de EJB 3.0 como parte de JSR 220, aunque su uso no se limita a los componentes software EJB. Se puede utilizar en aplicaciones web y aplicaciones clientes.
Ventajas e inconvenientes
Interfaces JPA
Los 5 tipos de interfaces de las que se compone JPA son:

javax.persistence.Persistence:
Contiene métodos estáticos de ayuda para obtener una instancia de Entity Manager Factory de una forma independiente al vendedor de la implementación de JPA. Una clase de inicialización que va proporcionar un método estático para la creación de una Entity Manager Factory.

javax.persistence.EntityManagerFactory:
La clase javax.persistence.Entity.Manager.Factory nos ayuda a crear objetos de EntityManager utilizando el patrón de diseño del Factory. Este objeto en tiempo de ejecución representa una unidad de persistencia particular. Generalmente va a ser manejado como un singleton y proporciona métodos para la creación de instancias EntityManager.

javax.persistence.EntityManager:
Es la interfaz principal de JPA utilizada para la persistencia de las aplicaciones. Cada Entity Manager puede realizar operaciones CRUD (Create, Read, Update, Delete) sobre un conjunto de objetos persistentes. Es un objeto único, no compartido que representa una unidad de trabajo particular para el acceso a datos. Proporciona métodos para gestionar el ciclo de vida de las instancias entidad y para crear instancias Query.

javax.persistence.Query:
La interface javax.persistence.Query está implementada por cada vendedor de JPA para encontrar objetos persistentes manejando cierto criterio de búsqueda. JPA estandariza el soporte para consultas utilizando Java Persistence Query Language (JPQL) y Structured Query Language (SQL). Podemos obtener una instancia de Query desde una instancia de un Entity Manager.

javax.persistence.EntityTransaction
: Cada instancia de Entity Manager tiene una relación de uno a uno con una instancia de javax.persistence.EntityTransaction, permite operaciones sobre datos persistentes de manera que agrupados formen una unidad de trabajo transaccional, en el que todo el grupo sincroniza su estado de persistencia en la base de datos o todos fallan en el intento, en caso de fallo, la base de datos quedará con su estado original. Maneja el concepto de todos o ninguno para mantener la integridad de los datos.

ESTADOS DE LA PERSISTENCIA
La persistencia puede tener 4 estados diferentes:

Transient:
Un objeto recién creado que no ha sido enlazado con el gestor de persistencia.
Persistent:
Un objeto enlazado con la sesión (Todos los cambios serán persistentes).
Detached:
Un objeto persistente que sigue en memoria después de que termina la sesión: existe en java y en la BDD.
Removed:
Un objeto marcado para ser eliminado de la BBDD: existe en java y se borrará de la BDD al terminar la sesión.

Requisitos e incompatibilidades
JPA ha sido definida como parte de la especificación EJB 3.0 de Java EE 5, que supone una simplificación sobre versiones anteriores, por lo que ya no requiere de un contenedor EJB ni un servidor de aplicaciones Java EE. Esto implica que no podrá utilizarse en versiones anteriores de Java.
JPA - Entity Manager
Antes que nada tenemos que tener bien en claro dos temas muy importanes que son:
Application-managed entity manager
Container-managed entity manager
Para las situaciones en donde no requerimos los servicios ofrecidos por un EJB3 Container, pero querremos utilizar el modelo de persistencia de JPA, el API JPA provee el Application-managed entity manager. En estos casos las aplicaciones son denominadas aplicaciones standalone.
JPA
1.Utilizar un framework de ORM simplifica enormemente la programación de la lógica de persistencia.

2.Es fundamental conocer bien cómo funcionan las tecnologías que se utilizan ya que dependiendo de cómo se realicen las cosas podrá afectar directamente al rendimiento de la aplicación.

3.Para obtener el mejor rendimiento de JPA, es importante entender los parámetros de tunning incluídos en la implementación de la JPA.

4.Si se utiliza JPA fuera del contenedr EJB, la caché y el pool de conexiones también juegan un papel importante en el rendimiento, aunque en este caso se configura el pool en el fichero persistence.xml.

5.Hay otros parámetros que pueden impactar en el rendimiento de JPA. Uno es el statement cache.

Interacciones
Muchos de los desarrolladores de Java que han utilizado objetos persistente que proporcionaban los marcos de código abierto o DAO's en lugar de Entity Beans e Enterprise Beans fue porque eran considerados demasiado pesados y complicados de utilizar. Además, estos últimos sólo podían utilizarse en servidores de aplicaciones Java EE. Muchas de las características de la persistencia de otros frameworks se incorporaron a la Java Persistence API, y proyectos como Hibernate y TopLink son ahora implementaciones de Java Persistence API (JPA).
Unidades de persistencia
La unidad de persistencia define un conjunto de todas las entidades (clases) que son gestionadas por la instancia del EntityManager en una aplicación. Este conjunto de clases de entidad representa los datos contenidos en una única BBDD.
Las unidades de persistencia se definen en el fichero de configuración persistence.xml.

Ejemplo
<persistence>
<persistence-unit name="OrderManagement">
<description>...</description>
<jta-data-source>jdbc/MyOrderDB</jta-data-source>
<jar-file>MyOrderApp.jar</jar-file>
<class>com.widgets.Order</class>
<class>com.widgets.Customer</class>
</persistence-unit>
</persistence>



ENTIDAD
Una entidad es un objeto de dominio de persistencia. Normalmente, una entidad representa una tabla en el modelo de datos relacional y cada instancia de esta entidad corresponde a un registro en esa tabla.
En este caso, y mientras la entidad sea manejada/asociada por el contexto de persistencia (también se las conoce como entidades atachadas o attached entities), el estado (valores de la propiedades) de la entidad sera automaticamente sincronizado con la BD.

•Campos de persistencia permanente: Si la entidad utiliza campos persistencia permanente, los accesos se realizan en tiempo de ejecución. Aquellos campos que no tienen anotaciones del tipo javax.persistence.Transient o no han sido marcados como Java transitorio serán persistentes para el almacenamiento de datos. Las anotaciones de mapeo objeto/relación deben aplicarse a los atributos de la instancia.

•Propiedades de persistencia permanente: Si la entidad utiliza propiedades de persistencia permanente, la entidad debe seguir el método de los convenios de componentes JavaBeans. Las propiedades de JavaBean usan métodos getters y setters en cuyo nombre va incluido el atributo de la clase al cual hacen referencia. Si el atributo es booleano podrá utilizarse isProperty en lugar de getProperty.

Clases con claves primarias
Una clase con clave primaria debe cumplir los siguientes requerimientos:

1.El modificador de control de acceso de la clase debe ser público.

2.Las propiedades de la clave primaria deben ser públicas o protected si se utiliza el acceso a la base de la propiedad.

3.La clase debe tener un constructor público por defecto.

4.La clase debe implementar los métodos hashCode() y equals(Object other)

5.La clase debe ser serializable.

Relaciones múltiples de la entidad
Hay cuatro tipos de relaciones:


Uno a uno:
Cada entidad se relaciona con una sola instancia de otra entidad. Las relaciones uno a uno utilizan anotaciones de la persistencia de java "OneToOne".

Uno a muchos:
Una entidad, puede estar relacionada con varias instancias de otras entidades. Las relaciones uno a muchos utilizan anotaciones de la persistencia de java "OneToMany" en los campos o propiedades persistentes.

Muchos a uno:
Múltiples instancias de una entidad pueden estar relacionadas con una sola instancia de otra entidad. Esta multiplicidad es lo contrario a la relación uno a muchos. Las relaciones muchos a uno utilizan anotaciones de la persistencia de java "ManyToOne" en los campos o propiedades persistentes.

Muchos a muchos:
En este caso varias instancias de una entidad pueden relacionarse con múltiples instancias de otras entidades.Este tipo de relación utiliza anotaciones de la persistencia de java "ManyToMany" en los campos o propiedades persistentes.

Muchas gracias!!!
Full transcript