Introducción
La persistencia es crucial para la mayoría de las aplicaciones que requieren acceso a bases de datos relaciones. Si has desarrollado aplicaciones usando Java, probablemente has sido responsable de muchas tareas relacionadas con el acceso a una base de datos relacional, como realizar modificaciones, inserciones, lecturas y transacciones usando JDBC y SQL.
En los últimos años, varios frameworks ORM (Object-relational mapping) como Oracle TopLink y JBoss Hibernate llegaron a ser populares porque ellos permiten realizar la persistencia de objetos de manera simple, dejando que el programador se preocupe más por la lógica del negocio que en cómo guardar los datos en una base de datos.
Impulsado por el gran éxito de los frameworks ORM, las falencias que el antiguo modelo de persistencia de Java (EJB 2.1) poseía, y la necesidad de estandarizar dichos mecanismos de persistencia en Java, Java Enterprise Edition 5 ha incluido una especificación nueva que estandariza la persistencia de objetos Java en bases de datos relacionales: Java Persistence API (JPA).
Este curso pretende de forma teórica y práctica dar los conocimientos necesarios para utilizar JPA en el desarrollo de aplicaciones Java, con el simple objetivo de que el programador no tenga que trabajar con SQL a través de JDBC sino mas bien trabajar con el modelo y la lógica de negocio, dejando el trabajo de persitencia a JPA.
Presentaciones teóricas
Presentación 1: Introducción
- ¿Qué es JPA?
- Entidades
- Anotaciones
- Operaciones sobre entidades
- Archivo de persistencia
- Mapeo Objeto/Relacional
- Relacionamientos
- Java Persistence Query Language (JPQL)
- Herencia
Presentación 2: Anotaciones comunes para entidades
- Anotaciones a nivel de campos y propiedades
- Anotación @Basic
- Tipos de datos válidos para mapeo simple
- Anotación @Transient
- Anotación @Temporal
- Anotación @Lob
- Anotación @Enumerated
- Anotaciones @Embeddable y @Embedded
Presentación 3: Identidad de una entidad
- Identidad de una entidad
- Llave primaria simple: @Id
- Generación de llaves primarias: @GeneratedValue
- Llaves primarias compuestas: @IdClass y @EmbeddedId
Presentación 4: Contextos de persistencia y EntityManager
- EntityManager
- Entidades administradas vs. no-administradas
- Contexto de persistencia
- Obteniendo un EntityManager
- Transacciones
- Principales operaciones con EntityManager
Presentación 5: Mapeo Objeto/Relacional (ORM)
- ORM y JPA
- Anotación @Table
- Anotación @Column
Presentación 6: Relacionamientos entre entidades
- Relaciones entre entidades
- Operaciones en cascada
- Relaciones uno-a-uno unidireccionales
- Relaciones uno-a-uno bidireccionales
- Relaciones uno-a-muchos unidireccionales
- Relaciones muchos-a-uno unidireccionales
- Relaciones uno-a-muchos bidireccionales
- Relaciones muchos-a-muchos unidireccionales
- Relaciones muchos-a-muchos bidireccionales
- Carga de relaciones
- Anotaciones ORM
Presentación 7: Herencia
- Herencia entre entidades
- Estratégia: Una tabla por jerarquía
- Estratégia: Una tabla por clase concreta
- Estratégia: Asociación de tablas por subclase
- Superclases que no son entidades
Presentación 8: JPQL - Java Persistence Query Language
- Consultas sobre entidades
- El API Query
- JPQL
- Principales operadores JPQL
- Consultas SQL nativas
- Consultas declaradas
Material práctico
En esta sección se presenta demostraciones de implementaciones de proyectos en los cuales se hace uso de los conceptos impartidos en la sección de presentaciones teóricas. Adicionalmente el código fuente de cada proyecto está disponible para descarga.Los proyectos correspondientes a cada práctica han sido creados con NetBeans 6.0 , se recomienda abrirlos con el mismo entorno.
Algo a tomar en cuenta en el caso de que descargue el código fuente de un proyecto es que en cada práctica se utiliza una base de datos, la cual es propia a cada instalación y configuración del entorno de desarrollo (por ende no se incluye). Lo que se debe hacer antes de ejecutar el proyecto abierto es simplemente crear la base de datos (Java DB) desde el menú que NetBeans 6 provee (ver demostración corresponiente a cada práctica).
Práctica 1: Creación de una simple entidad
Se realiza la instalación de NetBeans 6 y se implementa un proyecto para interactuar con la primera entidad JPA.
Ver demostración - Descargar código fuente del proyecto
Práctica 2: Anotaciones básicas
Implementación de una aplicación que hace uso de las principales anotaciones provistas por JPA sobre una entidad.
Ver demostración - Descargar código fuente del proyecto
Práctica 3: Identidad de una entidad
Se implementa una aplicación que hace uso de las diferentes estrategias que JPA provee para el manejo de la identidad de una entidad (llaves primarias).
Ver demostración - Descargar código fuente del proyecto
Práctica 4: EntityManager en Java SE
Se implementa una aplicación que usa EntityManager en entornos Java SE.
Ver demostración - Descargar código fuente del proyecto
Práctica 5: EntityManager en Java EE
Se implementa una aplicación que usa EntityManager en entornos Java EE.
Ver demostración - Descargar código fuente del proyecto
Práctica 6: Anotaciones ORM
Se implementa una aplicación que demuestra el uso de las anotaciones ORM que JPA provee.
Ver demostración - Descargar código fuente del proyecto
Práctica 7: Relacionamientos entre entidades
Se implementa una aplicación que usa las diferentes estrategias de relacionamiento entre entidades.
Ver demostración - Descargar código fuente del proyecto
Práctica 8: Herencia
Se implementa una aplicación que demuestra el uso de las diferentes estrategias de herenci.
Ver demostración - Descargar código fuente del proyecto
Práctica 9: JPQL
Se implementa una aplicación que demuestra el uso de JPQL.

