Si bien cada proveedor de JPA (Hibernate, EclipseLink, OpenJPA) implementa las especificaciones de la API de Java Persistence, necesitará más que eso incluso para una pequeña aplicación web.
Por ejemplo, Hibernate ofrece las siguientes características que no se han incluido en JPA 2.1:
- generadores de identificadores extendidos (hi / lo, agrupados, agrupados-lo)
- procesamiento por lotes preparado transparente
-
@SQLInsert
CRUD personalizables (@SQLInsert
,@SQLUpdate
,@SQLDelete
) - filtros de entidad / colección estáticos / dinámicos (por ejemplo,
@Filter
,@Where
,@Where
) - asignación de propiedades a fragmentos de SQL (por ejemplo,
@Formula
) - entidades inmutables (por ejemplo,
@Immutable
) - más modos de descarga (por ejemplo,
FlushMode.ALWAYS
,FlushMode.ALWAYS
) - consultar el caché de segundo nivel por la clave natural de una entidad dada
- estrategias de concurrencia de caché a nivel de entidad
(por ejemplo,Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
) - actualizaciones masivas versionadas a través de HQL
- excluir campos de la comprobación de bloqueo optimista (por ejemplo,
@OptimisticLock(excluded = true)
) - bloqueo optimista sin versión (por ejemplo,
OptimisticLockType.DIRTY
,OptimisticLockType.DIRTY
) - soporte para omitir (sin esperar) solicitudes de bloqueo pesimista
- soporte para Java 8 Fecha y hora
- soporte para multitenancy
- soporte para entidades de auditoría (Envers)
- soporte para búsqueda de texto completo (Hibernate Search)
- soporte para bases de datos NoSQL (Hibernate OGM)
Si aún no está convencido, consulte la impresionante documentación que fue reescrita y preparada desde cero. Si tiene alguna pregunta, encontrará una respuesta en el foro oficial o en StackOverflow (hay más de 55 000 preguntas y respuestas allí, 10 veces más que todos los demás proveedores de JPA combinados).
- ¿Puede la aplicación web Meteor en la práctica escalar a más de 100,000 usuarios que compartirían ~ 1 foto (a veces video) y chatearían entre ellos (uno a uno) todos los días?
- ¿Cuál es el mejor lenguaje para crear una aplicación web que monitorea los datos de la base de datos?
- ¿Es bueno aprender un marco web?
- ¿Cuál es la mejor herramienta o servicio para mapear todos los flujos en una aplicación?
- En 2017, ¿qué pila tecnológica debo usar para optimizar una aplicación en tiempo real para el rendimiento, la escalabilidad y la legibilidad?
Por todas estas razones, Hibernate es una muy buena opción para cuando quieres usar JPA.