Une brève description tirée de la Wikipédia expliquant à quoi servent chacun des modules d'Hibernate et par extension quand les utiliser dans un projet.
Hibernate se compose de plusieurs modules développés par des équipes différentes.
Core
Le module principal d'Hibernate contient les fonctionnalités clefs (principalement connues depuis la version 2 de la bibliothèque) telles que les sessions, les transactions, le cache d'objet ou le langage SQL.
Annotations
Apporte le support des Annotations tel que décrit dans JSR 175. Cette approche permet d'éviter la description de la correspondance entre les champs d'une table et les champs du POJO en XML.
Entity managerModifier
Permet le support de JSR 220 JPA par le module Core.
Shards
Ce module permet la partition horizontale du Core Hibernate.
Validator
Module de validation des contraintes d'entité de la base de données, implanté sous forme d'annotations telles que les plages de valeurs autorisées, les formats de chaine de caractères, la détection des valeurs nulles, etc.
Search
Le dernier module apporte une couche d'abstraction pour la recherche de Lucene appliquée sur les entités persistantes maintenues par Hibernate.
Tools
Ensemble d'outils pour Ant ou Eclipse facilitant le développement avec Hibernate."
Un exemple d'utilisation de Google Trend avec une comparaison Git vs Mercurial vs SVN