Introduction à l'architecture Hibernate

Avant d'entrer dans l'architecture Hibernate, voyons pourquoi Hibernate est entré en scène et quel objectif il résout pour nous. Hibernate est un outil ORM (Object Relational Mapping) pour un langage de programmation Java permettant de développer une logique de persistance basée sur les objets et indépendante de la base de données. Hibernate fournit une couche d'abstraction pour récupérer et stocker des données dans une base de données.

Pourquoi Hibernate?

JDBC (Java Database Connectivity) dépend de la base de données. Pour être plus précis, l'écriture de requêtes à exécuter à partir de votre application à l'aide de JDBC dépend de la base de données avec laquelle vous travaillez. Si vous travaillez avec MySQL ou Oracle, vos requêtes seront différentes. Donc, si au milieu d'un projet, vous devez changer votre base de données, cela nécessitera également un changement de code, et bien sûr, nous ne voulons pas cela. En revanche, hibernate utilise un langage de requête Hibernate indépendant de la base de données. En bref, hibernate s'occupe de la plupart de ce que le développeur avait à faire avec JDBC, par exemple. Ouverture d'une connexion à la base de données, fermeture de connexions, gestion de diverses exceptions.

Passons donc à l'architecture Hibernate pour mieux comprendre comment Hibernate a rendu la persistance des données beaucoup plus facile.

Architecture d'hibernation

Le concept principal étant tout ORM est de remplacer l'écriture de requêtes SQL spécifiques à la base de données par la manipulation d'objets.

Pour le dire simplement,

  • vous créez un POJO (Plain Old Java Object)
  • attribuer des valeurs aux champs à l'aide de setters
  • dire à l'hibernation de conserver ces objets

Hibernate mappe les classes Java aux tables de base de données (ce qui implique également de mapper les types de données java aux types de données SQL).

Cela élimine donc la douleur de la conversion des champs java en types de données pris en charge par SQL. Hibernate le fait pour vous.

Il soulage également le développeur de la douleur de la manipulation de l'ensemble de résultats.

Application Java

Lors du développement de la logique de persistance, nous devons prendre en charge certaines ressources dans l'application java. Examinons ces ressources.

Le cœur de toute application Hibernate réside dans sa configuration, qui se fait en utilisant,

  • Fichier de configuration
  • Fichier de mappage

Hibernate Configuration File

Nous définissons les propriétés qui indiquent à l'hibernation la base de données avec laquelle il doit interagir et le pilote JDBC à utiliser. Hibernate utilise un fichier de configuration pour obtenir toutes ces informations.

Bien qu'Hibernate soit capable de générer des requêtes de base de données, nous pouvons spécifier le dialecte pour l'aider à générer un meilleur SQL pour la base de données requise.

Par exemple, voici les propriétés que vous définissez généralement dans une application Spring Boot

Hibernate Mapping File

Il contient toutes les définitions de mappage classe-table. Chaque outil ORM a besoin d'un fichier de mappage. Nous utilisons les méthodes suivantes pour indiquer à Hibernate quelle valeur d'un objet doit être stockée dans quelle colonne de la table.

  • XML
  • Annotations

Syntaxe d'un fichier de mappage xml au printemps,

Voici comment nous annotons la variable d'instance qui doit être mappée sur une colonne d'une ligne dans la base de données.

Classe de domaine

Comme nous le savons, Hibernate est connu pour développer une logique de persistance basée sur les objets. Une classe de domaine est donc un POJO mappé à une table de la base de données.

Configuration

Pour créer une connexion à la base de données, Hibernate doit connaître les détails de la base de données, les classes et d'autres détails. Un objet de configuration est créé une fois lors de l'initialisation d'une application. Il est principalement responsable de l'amorçage d'Hibernate vers l'application. Un objet de configuration utilise le fichier de configuration et le fichier de mappage de mise en veille prolongée pour effectuer les étapes suivantes:

  • Chargez ces fichiers.
  • Vérifie si ces fichiers sont bien formés et valides.
  • Crée des métadonnées en mémoire de ces deux fichiers.
  • Renvoie un objet qui contient ces métadonnées.

Session Factory

Une fabrique de session est utilisée pour créer des objets de session. Il est créé par l'objet de configuration. Il fournit une couche d'abstraction, nous n'avons donc pas à nous soucier de la façon dont l'objet de session est créé. Il s'agit d'une classe d'usine globale thread-safe pour la création de sessions. En utilisant l'objet de configuration, nous avons accès aux données en mémoire créées à partir du fichier de configuration et de mappage.

De là, il obtient les propriétés JDBC - nom du pilote, URL de la source de données, nom d'utilisateur, mot de passe, etc. En utilisant ces propriétés, il créera des objets de connexion, représentant la connectivité à la base de données.

À l'aide de ces connexions, un pool de connexions est créé. Toutes les informations de l'objet de configuration et du pool de connexions sont utilisées pour créer et renvoyer un objet de session. Par conséquent, un objet de fabrique de session est un objet lourd. Chaque fabrique de sessions est configurée pour fonctionner avec une base de données spécifique en utilisant l'un des dialectes Hibernate spécifiés.

Session

Une chose à noter est qu'elle n'est pas liée à une session de servlet ou à une session de messagerie Java. Une session est une passerelle vers notre base de données. Il crée un pont entre notre application et la base de données. Il est créé par la fabrique de sessions. Il prend l'objet de connexion et ouvre une connexion / session à la base de données et permet à l'application d'effectuer des opérations de persistance sur la base de données.

Dans un outil ORM, vous effectuez toutes les opérations telles que INSERT, DELETE et UPDATE à l'aide de la sémantique orientée objet, ce qui signifie que vous ne faites plus référence aux tables, aux lignes et aux colonnes. C'est le travail des sessions pour faire toutes les opérations de persistance pour vous.

Transaction

Une transaction est un objet éphémère qui représente une seule unité de travail comme l'enregistrement ou la suppression d'un objet dans une table de la base de données. Il résume l'application de la transaction sous-jacente effectuée à l'aide de JDBC, JTA (Java Transaction API), etc.

En interne, mettez en veille prolongée à l'aide de JDBC, JTA, JNDI (Java Naming and Directory Interface) pour générer des requêtes SQL pour la base de données configurée.

Conclusion

Dans cet article, nous avons examiné comment l'architecture en couches d'Hibernate aide un programmeur à travailler avec une base de données sans avoir à connaître les détails de l'API sous-jacente comme JDBC, JTA et JNDI. Nous avons appris comment Hibernate nous facilite la vie en manipulant la plupart du code passe-partout comme l'ouverture / fermeture de la connexion à la base de données. J'espère que cela vous donnera une compréhension claire de l'architecture Hibernate, qui vous permettra de commencer à utiliser le cadre Hibernate dans vos applications.

Articles recommandés

Ceci est un guide de l'architecture Hibernate. Nous discutons ici de l'architecture en couches de hibernate avec l'application Java. Vous pouvez également consulter l'article suivant pour en savoir plus -

  1. Qu'est-ce que Hibernate?
  2. Cadre Hibernate
  3. Questions d'entretiens chez Hibernate
  4. Qu'est-ce que Java Hibernate?