domingo, 13 de diciembre de 2009

Hibernate in Action Second Edition

Este libro, escrito por Christian Bauer y Gavin King, es una revisión de otro libro anterior, Hibernate in Action. Está actualizado a la versión 3 de Hibernate y, además, presenta el estándar de persistencia de de EJB 3.0 (JPA).

Se trata de un libro de referencia no sólo para Hibernate, sino también para JPA. En él se puede encontrar información de introducción a estas dos tecnologías ORM, enseña a realizar con éxito los mapeos de objetos a entidades relacionales, explica el funcionamiento interno de Hibernate y cómo optimizar su comportamiento y da pautas sobre cómo construir aplicaciones que hagan uso Hibernate y/o JPA.

Consta de los siguientes capítulos:
  1. Comprender la persistencia objeto/relacional: Se hace una introducción a los problemas de la persistencia en aplicaciones orientadas a objetos que usan bases de datos relacionales, explicando los desajustes que se producen entre estas dos tecnologías. Se presentan las distintas alternativas existentes para la capa de persistencia y se presentan los ORM como la solución que nos permite abstraernos de los desajustes anteriormente mencionados.

  2. Comenzar un proyecto: Se presentan las posibles alternativas de desarrollo con Hibernate, dependiendo de si empezamos desde un modelo de clases o desde un modelo relacional. A continuación se muestra la configuración de Hibernate en un proyecto y se implementa el mismo proyecto de distintas formas: usando Hibernate y mapeo XML, anotaciones, JPA mediante el Hibernate EntityManager y componentes EJB. Posteriormente se hace una introducción a la ingeniería inversa con Hibernate dada una base de datos. Por último, se presenta cómo se integra Hibernate con otros servicios de la plataforma JEE como JTA, JNDI y JMX.

  3. Modelos de dominio y metadatos: Se presenta el modelo de dominio de ejemplo que se utilizará en el libro, un sistema de subastas. Se presentan las pautas para la implementación de este modelo, como el desarrollo de POJOs. A continuación se muestran las distintas alternativas para los metadatos de mapeo, XML, anotaciones, XDoclet y de forma programática en la ejecución. Por último se presentan representaciones alternativas de las entidades mediante mapas y XML.

  4. Mapear clases persistentes: Se explica la diferencia entre las entidades y los tipos de valor. También se ve el concepto de identidad en Hibernate. Después se ven algunas opciones para el mapeo de clases. Por último, se ve como mapear tipos de valor, tanto para tipos de datos Java como para clases.

  5. Herencia y tipos personalizados: Se muestran las distintas formas de manejar la herencia en Hibernate. También se ve el conjunto de tipos de datos que ofrece Hibernate y explica como crear tipos de datos personalizados.

  6. Mapear colecciones y asociaciones de entidades: Se presentan los distintos tipos de colecciones que maneja Hibernate y se muestra cómo mapear colecciones de tipos de valor tanto en el caso de tipos simples como de clases. Posteriormente se ve cómo mapear una relación padre/hijo entre entidades.

  7. Mapeo avanzado de asociaciones de entidades: Se continúa viendo cómo mapear relaciones entre entidades, tanto relaciones simples como múltiples. También se ven las asociaciones polimórficas entre entidades.

  8. Bases de datos heredadas y SQL personalizado: Se comentan los principales problemas en la integración con bases de datos heredadas. Después se estudia la personalización del SQL que genera Hibernate en las consultas, y se ve la integración de procedimientos almacenados y funciones. Por último, se muestra cómo mejorar el DDL generado por Hibernate para personalizar los nombres y los tipos de datos, añadir restricciones o crear índices.

  9. Trabajar con objetos: En este capítulo se comienza exponiendo el ciclo de vida de los objetos persistentes y después se habla de los conceptos de identidad e igualdad de objetos, introduciendo las conversaciones y el ámbito de identidad de un objeto. A continuación se ven los interfaces de persistencia de Hibernate y de JPA, terminando con una explicación de cómo usar JPA en componentes EJB.

  10. Transacciones y concurrencia: Se revisan los conceptos básicos de las transacciones en las bases de datos y cómo pueden ser manejadas en Hibernate y JPA. También se trata el control del acceso concurrente en las bases de datos, revisando el control optimista de la concurrencia y cómo se pueden obtener garantías adicionales en el aislamiento. Por último, se estudia el acceso no transaccional, viendo en qué casos se puede trabajar en modo autocommit tanto con Hibernate como con JPA.

  11. Implementando conversaciones: Se comienza viendo cómo se propaga la sesión en Hibernate, que puede ser a través de una variable thread-local, a través de JTA o mediante EJBs. Después se ve cómo se pueden implementar convesaciones en Hibernate, JPA y EJB a través de objetos “separados” (detached) y extendiendo la sesión.

  12. Modificar objetos eficientemente: En primer lugar se estudia la persistenca transitiva de objetos a través de las asociaciones en cascada, tanto con Hibernate como con JPA. Posteriormente se pasa a ver cómo manejar operaciones que implican grandes volúmenes de datos a través de HQL y JPA QL y cómo procesar lotes. Por último, se ve cómo filtrar los datos de las consultas y cómo interceptar eventos en Hibernate.

  13. Optimizar la recuperación y el cacheo: Comenzamos viendo cómo definir el plan de obtención de datos en Hibernate y se dan pautas de qué estrategia elegir y cóm optimizarla. Posteriormente se exponen los principios de cacheo en Hibernate y se explica cómo establecer una cache de segundo nivel a través de proveedores de cache.

  14. Hacer consultas con HQL y JPA QL: Veremos cómo crear y ejecutar consultas a base de datos. Se aprenderá a crear consultas básicas con HQL y JPA QL y cómo se usan las joins, las consultas de informes y las subselects.

  15. Opciones de consulta avanzadas: En este capítulo se ve cómo usar las APIs Criteria y Example para construir consultas de forma programática. También se ve cómo hacer consultas nativas en SQL. Después se ve cómo filtrar colecciones, y, por último, se habla del cacheo de resultados de consultas y en qué casos es conveniente hacerlo.

  16. Crear y probar aplicaciones en capas: En este capítulo se dan pautas para el diseño de aplicaciones web con Hibernate, a través de patrones como OSIV (Open Session In View), Command y DAO (Data Access Object). También se trata el diseño de aplicaciones con EJB 3.0. Por último, se trata el tema de cómo probar estas aplicaciones y se presentan herramientas como TestNG y DBUnit.

  17. Introducción a JBoss Seam: En este capítulo se hace un introducción al marco de trabajo JBoss Seam, un marco de trabajo orientado a Java EE 5.0 que se base en JSF y EJB 3.0. Se ve cómo mejorar una aplicación usando este marco, cómo utilizar componentes contextuales, cómo validar los datos de entrada y cómo simplificar la persistencia.

Se trata de un libro difícil de leer de corrido por la complejidad de los temas que trata. Sin embargo, creo que es un libro de referencia excelente sobre Hibernate y JPA.

No hay comentarios:

Publicar un comentario