Qu'est-ce que Hibernate?

Officiellement connu sous le nom de Hibernate ORM, il s'agit d'un outil ou cadre de mappage relationnel-objet pour le langage de programmation Java. Il s'agit du logiciel gratuit sous licence GNU Lesser General Public License 2.1. Il vise à fournir à l'utilisateur le cadre pour gérer le mappage d'impédance relationnelle objet. Il gère également les accès persistants à la base de données avec des fonctions de gestion d'objets de très haut niveau. Il s'agit d'un framework middleware de java utilisé pour le mappage relationnel-objet et pour effectuer une persistance d'objet efficace.

Architecture

Pour en savoir plus sur l'hibernation, nous devons comprendre son architecture qui comprend:

  • Un code d'application Java se compose de toutes les classes, variables et objets qui définissent la logique métier de l'application. Ces classes communiquent avec l'Hibernate.
  • Vient ensuite, l'Hibernate et ses principes de base, à l'aide desquels nous pourrions persister (stocker ou enregistrer et récupérer) les objets de nos classes de couche métier en communiquant avec la couche serveur de base de données.
  • Il utilise l'API Java core, la Java Database Connectivity (JDBC), la Java Transaction API (JTA), la Java Naming and Directory Interface (JNDI) pour communiquer avec la base de données afin de conserver l'état d'un objet en effectuant la lecture, la création, la mise à jour, supprimer les opérations (CRUD).

Il est essentiellement utilisé pour communiquer avec la base de données. Ici, nous créons juste quelques entités, qui ne sont rien d'autre qu'une classe java qui va créer une table de base de données pour nous dans la base de données.

Cadre

Ici, nous rencontrons une question qui explique pourquoi nous utilisons le cadre de mise en veille prolongée de Java si nous avons déjà les principes de base de Java. Voici donc la réponse à cela:

  • Utilisé les meilleurs concepts JDBC tels que:
  1. Rowset au lieu de ResultSet
  2. DataSource (pool de connexions) au lieu de DriverManager
  3. Opérations par lots au lieu d'opérations individuelles
  4. PreparedStatement au lieu de Statement
  • Le coût de développement du projet est réduit dans une large mesure.
  • Aucune fuite de mémoire
  • La gestion d'associations telles que un-à-plusieurs, etc. est simple et facile par rapport à l'utilisation de propriétés de collection telles que java.util.Set, List, Map.
  • Être un cadre ORM, l'Hibernate obtiendra tous ses avantages:
  • Prend en charge le cache de deuxième niveau
  • L'objet devient un record et vice versa.
  • Prend également en charge le langage de requête objet (HQL)
  • Prend en charge plusieurs générateurs de clés primaires

Caractéristiques d'Hibernate

Il s'agissait donc du framework hibernate java et de son architecture, parlons des fonctionnalités de la dernière écurie hibernate sortie il y a 57 jours soit le 23 février 2019. Développée par le logiciel Red Hat, c'est une plateforme de machine virtuelle avec de nombreuses fonctionnalités:

  • Il prend en charge JMX et JCA.
  • Il fournit une fonctionnalité d'intégration J2EE.
  • Au moment de l'initialisation du système, il génère du SQL.
  • Fournissez éventuellement un pool de connexions internes et une mise en cache préparée des instructions.
  • Il prend en charge un verrouillage optimiste avec versioning.
  • Il fournit une récupération de jointure externe.
  • Il introduit l'initialisation paresseuse.
  • Il fournit un cache de niveau session et un cache de second niveau facultatif.
  • Il fournit une architecture de cache à double couche.
  • Génération automatique de la clé primaire.
  • Il prend en charge le concept difficile des clés composites.
  • Il prend en charge le concept d'objet détaché.
  • Il introduit le concept de vérification automatique sale.
  • Il fournit une persistance transparente sans traitement de code octet.
  • Il fournit des mappages d'objets / relationnels. Voici différentes stratégies de mappage O / R en tant que mappage d'objets multiples à mappage sur une seule ligne,
  • Associations polymorphes, association bidirectionnelle, filtrage d'association. Il fournit également des documents de mappage XML.
  • Il fournit différents langages de requête orientés objet.
  • Langage de requête Hibernate (HQL) orienté objet minimal, requêtes SQL natives
  • Concept de critères hautement orienté objet.

Pourquoi nous utilisons Hibernate

Ici, c'était toutes les dernières fonctionnalités d'Hibernate. Vient ensuite la question de savoir pourquoi nous l'utilisons, voici donc les raisons pour lesquelles nous préférons utiliser la mise en veille prolongée:

  • Gestion des transactions
  • Les associations
  • Héritage
  • Mise en cache en veille prolongée
  • Versioning
  • Fonction d'audit
  • Prise en charge des annotations JPA
  • Mise en commun des connexions
  • Éviter les blocs try-catch
  • Évitez le chargement paresseux
  • Réduit le code de répétition

Les avantages

Briefing tout sur hibernate, il est maintenant temps de discuter de l'agenda principal qui est les avantages et les inconvénients d'utiliser hibernate. En couvrant le sujet, commençons par les avantages de l'hibernation qui sont les suivants:

  1. ORM - l'entretien est facile et rentable.
  2. Persistance transparente
  3. Indépendant de la base de données
  4. HQL - Les fonctionnalités avancées de HQL comme la pagination et le profilage dynamique ne sont pas présentes dans SQL. Nous pouvons donc l'utiliser en hibernation.
  5. Mise en cache double couche
  6. Propriété Version
  7. Open source et logiciel gratuit
  8. L'évolutivité est facile
  9. Chargement différé - Le concept de chargement différé ne récupère que l'objet nécessaire à l'exécution d'une application.
  10. Facile à apprendre
  11. Prend également en charge des collections telles que List, Set, Map.
  12. capacité à générer des clés primaires
  13. Hibernate a fourni des cours de dialecte
  14. Il prend en charge les relations comme un à plusieurs, un à un, plusieurs à plusieurs à plusieurs, plusieurs à un

Désavantages

Avec les avantages, l'hibernation présente également très peu d'inconvénients. Voici donc les inconvénients de l'hibernation:

  1. peu plus lent que JDBC pur
  2. problème de code passe-partout
  3. générer de nombreuses instructions SQL au moment de l'exécution
  4. Hibernate ne convient pas au traitement par lots
  5. La mise en veille prolongée est lente car elle utilise la réflexion du temps d'exécution
  6. Beaucoup d'API à apprendre
  7. Parfois, le débogage et le réglage des performances deviennent difficiles.
  8. Ne convient pas aux petits projets
  9. Ne permet pas plusieurs insertions
  10. Génère des requêtes complexes avec de nombreuses jointures
  11. Les requêtes HQL ne peuvent pas appeler le programme PL / SQL

Conclusion

Donc, avec tous ces sujets couverts, nous devons également connaître l'avenir de l'hibernation. Nous pouvons dire que Hibernate sera toujours l'outil ORM dominant pendant beaucoup plus longtemps étant donné que JPA rattrape son retard rapidement. Mon impression est que Hibernate est l'implémentation la plus largement utilisée de JPA (avant OpenJPA et EclipseLink), et aussi que son API native ou de base est toujours plus puissante que JPA 2. Pour ces seules raisons, je pense qu'elle sera là pour longtemps temps. Il est très préférable d'utiliser Spring MVC en hibernation car c'est le MVC le plus compatible. L'utilisation d'un framework de persistance comme Hibernate permet aux développeurs de se concentrer sur l'écriture de code logique métier au lieu d'écrire une couche de persistance précise et bonne qui inclut l'écriture des requêtes SQL, du code JDBC, de la gestion des connexions, etc. Je peux donc suggérer d'utiliser hibernate comme framework java comme c'est le framework java le plus utilisé de nos jours.

Articles recommandés

Cela a été un guide pour ce qui est Hibernate. Nous discutons ici de l'architecture, des fonctionnalités, du cadre, des avantages et des inconvénients d'Hibernate. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Questions d'entretiens chez Hibernate
  2. Qu'est-ce que NumPy?
  3. Qu'est-ce que Open Cart?
  4. Questions d'entretiens chez Struts 2
  5. Conventions de dénomination Java