Analisis de educaedu
[2-10] Curso de Hibernate
Hibernate es una herramienta de Mapeo objeto-relacional (ORM) para la plataforma Java (y disponible también para .Net con el nombre de NHibernate) que facilita el mapeo de atributos entre una base de datos relacional tradicional y el modelo de objetos de una aplicación, mediante archivos declarativos (XML) o anotaciones en los beans de las entidades que permiten establecer estas relaciones.
Hibernate es software libre, distribuido bajo los términos de la licencia GNU LGPL.
1. Tutorial
1.1. Parte 1 - La primera aplicación Hibernate
1.1.1. Configuración
1.1.2. La primera clase
1.1.3. El archivo de mapeo
1.1.4. Configuración de Hibernate
1.1.5. Construcción con Maven
1.1.6. Inicio y ayudantes
1.1.7. Carga y almacenamiento de objetos
1.2. Part 2 - Mapeo de asociaciones
1.2.1. Mapeo de la clase Person
1.2.2. Una asociación unidireccional basada en Set
1.2.3. Trabajo de la asociación
1.2.4. Colección de valores
1.2.5. Asociaciones bidireccionales
1.2.6. Trabajo con enlaces bidireccionales
1.3. Part 3 - La aplicación web EventManager
1.3.1. Escritura de un servlet básico
1.3.2. Procesamiento y entrega
1.3.3. Despliegue y prueba
1.4. Resumen
2. Arquitectura
2.1. Sinopsis
2.1.1. Minimal architecture
2.1.2. Comprehensive architecture
2.1.3. Basic APIs
2.2. Integración JMX
2.3. Sesiones contextuales
3. Configuración
3.1. Configuración programática
3.2. Obtención de una SessionFactory
3.3. Conexiones JDBC
3.4. Parámetros de configuración opcionales
3.4.1. Dialectos de SQL
3.4.2. Recuperación por Unión Externa - Outer Join Fetching
3.4.3. Flujos Binarios
3.4.4. Caché de segundo nivel y de lectura
3.4.5. Sustitución de Lenguaje de Consulta
3.4.6. Estadísticas de Hibernate
3.5. Registros de mensajes (Logging)
3.6. Implementación de una NamingStrategy
3.7. Implementing a PersisterClassProvider
3.8. Archivo de configuración XML
3.9. Java EE Application Server integration
3.9.1. Configuración de la estrategia de transacción
3.9.2. SessionFactory enlazado a JNDI
3.9.3. Administración de contexto de Sesión Actual con JTA
3.9.4. Despliegue JMX
4. Clases persistentes
4.1. Ejemplo simple de POJO
4.1.1. Implemente un constructor sin argumentos
4.1.2. Provide an identifier property
4.1.3. Prefer non-final classes (semi-optional)
4.1.4. Declare métodos de acceso y de modificación para los campos persistentes (opcional)
4.2. Implementación de herencia
4.3. Implementando equals() y hashCode()
4.4. Modelos dinámicos
4.5. Tuplizers
4.6. EntityNameResolvers
5. Mapeo O/R Básico
5.1. Declaración de mapeo
5.1.1. Entity
5.1.2. Identifiers
5.1.3. Optimistic locking properties (optional)
5.1.4. Propiedad
5.1.5. Embedded objects (aka components)
5.1.6. Inheritance strategy
5.1.7. Mapping one to one and one to many associations
5.1.8. Natural-id
5.1.9. Any
5.1.10. Propiedades
5.1.11. Some hbm.xml specificities
5.2. Tipos de Hibernate
5.2.1. Entidades y Valores
5.2.2. Tipos de valores básicos
5.2.3. Tipos de valor personalizados
5.3. Mapeo de una clase más de una vez
5.4. Identificadores SQL en comillas
5.5. Propiedades generadas
5.6. Column transformers: read and write expressions
5.7. Objetos de bases de datos auxiliares
6. Types
6.1. Value types
6.1.1. Basic value types
6.1.2. Composite types
6.1.3. Collection types
6.2. Entity types
6.3. Significance of type categories
6.4. Custom types
6.4.1. Custom types using org.hibernate.type.Type
6.4.2. Custom types using org.hibernate.usertype.UserType
6.4.3. Custom types using org.hibernate.usertype.CompositeUserType
6.5. Type registry
7. Mapeos de colección
7.1. Colecciones persistentes
7.2. How to map collections
7.2.1. Claves foráneas de colección
7.2.2. Colecciones indexadas
7.2.3. Collections of basic types and embeddable objects
7.3. Mapeos de colección avanzados
7.3.1. Colecciones ordenadas
7.3.2. Asociaciones bidireccionales
7.3.3. Asociaciones bidireccionales con colecciones indexadas
7.3.4. Asociaciones ternarias
7.3.5. Using an <idbag>
7.4. Ejemplos de colección
8. Mapeos de asociación
8.1. Introducción
8.2. Asociaciones Unidireccionales
8.2.1. Many-to-one
8.2.2. Uno-a-uno
8.2.3. Uno-a-muchos
8.3. Asociaciones unidireccionales con tablas de unión
8.3.1. Uno-a-muchos
8.3.2. Many-to-one
8.3.3. Uno-a-uno
8.3.4. Muchos-a-muchos
8.4. Asociaciones bidireccionales
8.4.1. uno-a-muchos / muchos-a-uno
8.4.2. Uno-a-uno
8.5. Asociaciones bidireccionales con tablas de unión
8.5.1. uno-a-muchos / muchos-a-uno
8.5.2. uno a uno
8.5.3. Muchos-a-muchos
8.6. Mapeos de asociación más complejos
9. Mapeo de componentes
9.1. Objetos dependientes
9.2. Colecciones de objetos dependientes
9.3. Componentes como índices de Mapeo
9.4. Componentes como identificadores compuestos
9.5. Componentes dinámicos
10. Mapeo de herencias
10.1. Las tres estrategias
10.1.1. Tabla por jerarquía de clases
10.1.2. Tabla por subclase
10.1.3. Tabla por subclase: utilizando un discriminador
10.1.4. Mezcla de tabla por jerarquía de clases con tabla por subclase
10.1.5. Tabla por clase concreta
10.1.6. Tabla por clase concreta utilizando polimorfismo implícito
10.1.7. Mezcla de polimorfismo implícito con otros mapeos de herencia
10.2. Limitaciones
11. Trabajo con objetos
11.1. Estados de objeto de Hibernate
11.2. Haciendo los objetos persistentes
11.3. Cargando un objeto
11.4. Consultas
11.4.1. Ejecución de consultas
11.4.2. Filtración de colecciones
11.4.3. Consultas de criterios
11.4.4. Consultas en SQL nativo
11.5. Modificación de objetos persistentes
11.6. Modificación de objetos separados
11.7. Detección automática de estado
11.8. Borrado de objetos persistentes
11.9. Replicación de objetos entre dos almacenamientos de datos diferentes
11.10. Limpieza (flushing) de la sesión
11.11. Persistencia transitiva
11.12. Utilización de metadatos
12. Read-only entities
12.1. Making persistent entities read-only
12.1.1. Entities of immutable classes
12.1.2. Loading persistent entities as read-only
12.1.3. Loading read-only entities from an HQL query/criteria
12.1.4. Making a persistent entity read-only
12.2. Read-only affect on property type
12.2.1. Simple properties
12.2.2. Unidirectional associations
12.2.3. Bidirectional associations
13. Transacciones y concurrencia
13.1. Ámbitos de sesión y de transacción
13.1.1. Unidad de trabajo
13.1.2. Conversaciones largas
13.1.3. Consideración de la identidad del objeto
13.1.4. Temas comúnes
13.2. Demarcación de la transacción de la base de datos
13.2.1. Entorno no administrado
13.2.2. Utilización de JTA
13.2.3. Manejo de excepciones
13.2.4. Tiempo de espera de la transacción
13.3. Control de concurrencia optimista
13.3.1. Chequeo de versiones de la aplicación
13.3.2. Sesión extendida y versionado automático
13.3.3. Objetos separados y versionado automático
13.3.4. Personalización del versionado automático
13.4. Bloqueo pesimista
13.5. Modos de liberación de la conexión
14. Interceptores y eventos
14.1. Interceptores
14.2. Sistema de eventos
14.3. Seguridad declarativa de Hibernate
15. Procesamiento por lotes
15.1. Inserciones de lotes
15.2. Actualizaciones de lotes
15.3. La interfaz de Sesión sin Estado
15.4. Operaciones de estilo DML
16. HQL: El lenguaje de consulta de Hibernate
16.1. Sensibilidad a mayúsculas
16.2. La cláusula from
16.3. Asociaciones y uniones (joins)
16.4. Formas de sintaxis unida
16.5. Referencia a la propiedad identificadora
16.6. La cláusula select
16.7. Funciones de agregación
16.8. Consultas polimórficas
16.9. La cláusula where
16.10. Expresiones
16.11. La cláusula order by
16.12. La cláusula group by
16.13. Subconsultas
16.14. Ejemplos de HQL
16.15. Declaraciones UPDATE y DELETE masivas
16.16. Consejos y Trucos
16.17. Componentes
16.18. Sintaxis del constructor de valores por fila
17. Consultas por criterios
17.1. Creación de una instancia Criteria
17.2. Límitando el conjunto de resultados
17.3. Orden de los resultados
17.4. Asociaciones
17.5. Recuperación dinámica de asociaciones
17.6. Consultas ejemplo
17.7. Proyecciones, agregación y agrupamiento
17.8. Consultas y subconsultas separadas
17.9. Consultas por identificador natural
18. SQL Nativo
18.1. Uso de una SQLQuery
18.1.1. Consultas escalares
18.1.2. Consultas de entidades
18.1.3. Manejo de asociaciones y colecciones
18.1.4. Devolución de entidades múltiples
18.1.5. Devolución de entidades no-administradas
18.1.6. Manejo de herencias
18.1.7. Parámetros
18.2. Consultas SQL nombradas
18.2.1. Utilización de la propiedad return para especificar explícitamente los nombres de columnas/alias
18.2.2. Utilización de procedimientos para consultas
18.3. Personalice SQL para crear, actualizar y borrar
18.4. Personalice SQL para cargar
19. Filtración de datos
19.1. Filtros de Hibernate
20. Mapeo XML
20.1. Trabajo con datos XML
20.1.1. Especificación de los mapeos de XML y de clase en conjunto
20.1.2. Especificación de sólo un mapeo XML
20.2. Mapeo de metadatos XML
20.3. Manipulación de datos XML
21. Mejoramiento del rendimiento
21.1. Estrategias de recuperación
21.1.1. Trabajo con asociaciones perezosas
21.1.2. Afinación de las estrategias de recuperación
21.1.3. Proxies de asociaciones de un sólo extremo
21.1.4. Inicialización de colecciones y proxies
21.1.5. Utilización de recuperación de lotes
21.1.6. Utilización de la recuperación por subselección
21.1.7. Perfiles de recuperación
21.1.8. Utilización de la recuperación perezosa de propiedades
21.2. El Caché de Segundo Nivel
21.2.1. Mapeos de caché
21.2.2. Estrategia: sólo lectura
21.2.3. Estrategia: lectura/escritura (read/write)
21.2.4. Estrategia: lectura/escritura no estricta
21.2.5. Estrategia: transaccional
21.2.6. Compatibilidad de proveedor de caché/estrategia de concurrencia
21.3. Gestión de cachés
21.4. El Caché de Consultas
21.4.1. Habilitación del caché de peticiones
21.4.2. Regiones de caché de consultas
21.5. Comprensión del rendimiento de Colecciones
21.5.1. Taxonomía
21.5.2. Las listas, mapas, idbags y conjuntos son las colecciones más eficientes de actualizar
21.5.3. Los Bags y las listas son las colecciones inversas más eficientes
21.5.4. Borrado de un sólo tiro
21.6. Control del rendimiento
21.6.1. Control de una SessionFactory
21.6.2. Métricas
22. Manual del conjunto de herramientas
22.1. Generación automática de esquemas
22.1.1. Personalización del esquema
22.1.2. Ejecución de la herramienta
22.1.3. Propiedades
22.1.4. Utilización de Ant
22.1.5. Actualizaciones incrementales de esquema
22.1.6. Utilización de Ant para actualizaciones incrementales de esquema
22.1.7. Validación de Esquema
22.1.8. Utilización de Ant para la validación de esquema
23. Additional modules
23.1. Bean Validation
23.1.1. Adding Bean Validation
23.1.2. Configuration
23.1.3. Catching violations
23.1.4. Database schema
23.2. Hibernate Search
23.2.1. Description
23.2.2. Integration with Hibernate Annotations
24. Ejemplo: Padre/Hijo
24.1. Nota sobre las colecciones
24.2. Uno-a-muchos bidireccional
24.3. Ciclo de vida en cascada
24.4. Cascadas y unsaved-value
24.5. Conclusión
25. Ejemplo: Aplicación de Weblog
25.1. Clases Persistentes
25.2. Mapeos de Hibernate
25.3. Código Hibernate
26. Ejemplo: mapeos varios
26.1. Empleador/Empleado
26.2. Autor/Obra
26.3. Cliente/Orden/Producto
26.4. Mapeos varios de ejemplo
26.4.1. Asociación uno-a-uno "Tipificada"
26.4.2. Ejemplo de clave compuesta
26.4.3. Muchos-a-muchos con atributo compartido de clave compuesta
26.4.4. Discriminación basada en contenido
26.4.5. Asociaciones sobre claves alternativas
27. Prácticas recomendadas
28. Consideraciones de la portabilidad de la base de datos
28.1. Aspectos básicos de la portabilidad
28.2. Dialecto
28.3. Resolución del dialecto
28.4. Generación del identificador
28.5. Funciones de la base de datos
28.6. Mapeos de tipo
Referencias