Maison >php教程 >PHP开发 >La différence entre Mybatis et Hibernate

La différence entre Mybatis et Hibernate

高洛峰
高洛峰original
2017-01-05 17:23:561436parcourir

Je n'ai pas beaucoup utilisé mybatis auparavant. Je sais seulement qu'il s'agit d'un framework de base de données ORM comme hibernate. Au fur et à mesure que la maîtrise de son utilisation augmente, je trouve que c'est très différent de l'hibernation. Les amis intéressés devraient apprendre ensemble à travers cet article

Profitant de ce week-end, je prendrai le temps de trier certaines technologies couramment utilisées. . L'éditeur mettra également à jour occasionnellement le contenu.

Tout d'abord, présentez brièvement les concepts des deux :

Hibernate : Hibernate est actuellement le framework ORM le plus populaire, fournissant une encapsulation relativement complète de la structure de la base de données.

Mybatis : Mybatis est également un framework ORM très populaire qui se concentre principalement sur la relation de mappage entre POJO et SQL.

Deuxièmement, parlons des différences entre les deux sous plusieurs aspects :

1 La plus grande différence entre les deux :

Pour une logique simple, Hibernate et MyBatis ont des correspondances. Outil de génération de code capable de générer des méthodes de couche DAO simples et basiques.

Pour les requêtes avancées, Mybatis nécessite l'écriture manuelle des instructions SQL et de ResultMap. Hibernate dispose d'un bon mécanisme de mappage. Les développeurs n'ont pas besoin de se soucier de la génération SQL et du mappage des résultats et peuvent se concentrer davantage sur les processus métier.

2. Comparaison des difficultés de développement

Hibernate est plus difficile à développer que Mybatis. Principalement parce qu'Hibernate est complexe et vaste, et que le cycle d'apprentissage est long.

Mybatis est relativement simple et Mybatis s'appuie principalement sur l'écriture SQL, ce qui permet aux développeurs de se sentir plus familiers.

Comparaison d'écriture 3.sql

Le SQL de Mybatis est écrit manuellement, vous pouvez donc spécifier les champs de requête selon vos besoins. Cependant, il ne dispose pas de ses propres statistiques de journaux, il doit donc utiliser log4j pour enregistrer les journaux.

Hibernate peut également écrire son propre SQL pour spécifier les champs qui doivent être interrogés, mais cela détruit la simplicité du développement d'Hibernate. Cependant, Hibernate possède ses propres statistiques de journal.

4. Comparaison de l'évolutivité de la base de données

Mybatis a une évolutivité et une migration médiocres puisque tout le SQL est écrit en fonction de la base de données.

La relation spécifique entre Hibernate et la base de données est en XML, donc HQL ne se soucie pas beaucoup de la base de données spécifique utilisée.

5. Comparaison des mécanismes de mise en cache

Mêmes points : en plus d'utiliser le mécanisme de mise en cache par défaut du système, le cache de deuxième niveau d'Hibernate et de Mybatis peut tous deux implémenter votre propre cache ou un cache pour d'autres scénario tiers, créez un adaptateur pour remplacer complètement le comportement de mise en cache.

Différence : la configuration du cache de deuxième niveau d'Hibernate est configurée en détail dans le fichier de configuration généré par SessionFactory, puis le type de cache est configuré dans le mappage table-objet spécifique.

La configuration du cache de deuxième niveau de MyBatis est configurée en détail dans chaque mappage table-objet spécifique, afin que différents mécanismes de mise en cache puissent être personnalisés pour différentes tables. Et Mybatis peut partager la même configuration de cache et la même instance dans l'espace de noms, via Cache-ref.

Comparaison entre les deux : étant donné qu'Hibernate dispose d'un bon mécanisme de gestion des objets de requête, les utilisateurs n'ont pas besoin de se soucier de SQL. Par conséquent, si des données sales apparaissent lors de l'utilisation du cache de deuxième niveau, le système signalera une erreur et une invite.

À cet égard, MyBatis doit être particulièrement prudent lors de l'utilisation du cache de deuxième niveau. Si vous ne pouvez pas déterminer complètement la portée de l'opération de mise à jour des données, évitez l'utilisation aveugle du cache. Sinon, l’émergence de données sales entraînera de grands dangers cachés pour le fonctionnement normal du système.

6. Résumé :

mybatis : petit, pratique, efficace, simple, direct, semi-automatique
hibernation : puissant, pratique, efficace, complexe, rond-point, entièrement automatique

Hibernate et MyBatis peuvent utiliser SessionFactoryBuider pour générer une SessionFactory à partir d'un fichier de configuration XML, puis la SessionFactory génère une session, et enfin la session commence à exécuter des transactions et des instructions SQL.

L'avantage de MyBatis est que MyBatis peut effectuer une optimisation SQL plus détaillée, réduire les champs de requête et est facile à maîtriser.

L'avantage d'Hibernate est que le développement de la couche DAO est plus simple que ce dont MyBatis a besoin pour maintenir SQL et le mappage des résultats. La portabilité de la base de données est très bonne, mais la portabilité de la base de données de MyBatis n'est pas bonne. Différentes bases de données doivent écrire du SQL différent. Il existe un meilleur mécanisme de mise en cache de deuxième niveau qui peut utiliser la mise en cache tierce. Le mécanisme de mise en cache fourni par MyBatis lui-même est médiocre.

mybatis :

1. Facile à démarrer, prêt à apprendre et à utiliser, fournit une fonction de liaison d'objet automatique pour les requêtes de base de données et continue une bonne expérience d'utilisation de SQL, pour ceux qui ne sont pas si avancés. Pour les projets nécessitant des modèles objets, c’est tout à fait parfait.

2. Une optimisation SQL plus détaillée peut être effectuée et les champs de requête peuvent être réduits.

3. L'inconvénient est que le framework est encore relativement simple et que les fonctions sont toujours manquantes. Bien que le code de liaison de données soit simplifié, l'intégralité de la requête de base de données sous-jacente doit toujours être écrite par vous-même, et la charge de travail est relativement importante et difficilement adaptable aux modifications rapides de la base de données.

4. Mauvais mécanisme de mise en cache de deuxième niveau.

hibernate :

1. Capacité de mappage puissante, indépendante de la base de données et O/R. Si vous maîtrisez assez bien Hibernate et avez correctement encapsulé Hibernate, alors votre code de couche de persistance complet. le projet sera assez simple. Il y a très peu de code à écrire et la vitesse de développement est très rapide, ce qui est très agréable.

2. Il existe un meilleur mécanisme de cache de deuxième niveau et un cache tiers peut être utilisé.

3. L'inconvénient est que le seuil d'apprentissage n'est pas bas, et le seuil de maîtrise est encore plus élevé. De plus, comment concevoir le mappage O/R, comment trouver un équilibre entre performances et modèle objet, et comment le faire. faire bon usage d’Hibernate nécessite votre expérience et vos capacités. Ils doivent être très forts.
Une métaphore vivante :

mybatis : Les outils mécaniques sont faciles à utiliser et peuvent être utilisés dès que vous les apportez. Cependant, vous devez toujours faire le travail vous-même, mais les outils sont vivants, et. c'est à moi de décider comment les utiliser.

hiberner : un robot intelligent, mais le coût de son développement (apprentissage, maîtrise) est très élevé, et le travail peut s'en débarrasser, mais il est limité à ce qu'il peut faire.


Pour plus d'articles sur la différence entre Mybatis et Hibernate, veuillez faire attention au site Web PHP chinois !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn