Je n'ai pas beaucoup utilisé MyBatis auparavant, je sais seulement qu'il s'agit d'un cadre de base de données ORM comme Hibernate. À mesure que la compétence de l'utilisation augmente, j'ai constaté qu'elle est très différente de l'hibernate. Les amis intéressés peuvent l'apprendre à travers cet article.
Profitant de ce week-end, j'ai pris le temps de trier certaines technologies couramment utilisées, et l'éditeur mettra à jour le contenu de temps en temps.
Tout d'abord, introduisons brièvement les concepts des deux:
Hibernate: Hibernate est actuellement le cadre ORM le plus populaire et fournit une encapsulation relativement complète de la structure de la base de données.
Mybatis: Mybatis est également un cadre ORM très populaire, avec l'accent principal sur la relation de cartographie 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 la logique simple, Hibernate et MyBatis ont des outils de génération de code correspondants qui peuvent générer des méthodes de couche DAO simples et de base.
Pour les requêtes avancées, MyBatis nécessite une écriture manuelle des instructions SQL et des résultats. Hibernate a un bon mécanisme de cartographie, les développeurs n'ont donc pas besoin de se soucier de la génération SQL et de la cartographie des résultats, et peuvent se concentrer davantage sur les processus métier.
2. Comparaison des difficultés de développement
Le développement d'hibernate est plus difficile que Mybatis. Principalement parce que l'hibernate est complexe et grand et a un long cycle d'apprentissage.
Mybatis est relativement simple et Mybatis s'appuie principalement sur l'écriture SQL, ce qui rend les développeurs plus familiers.
3. Comparaison de l'écriture SQL
SQL de MyBatis est écrit manuellement, vous pouvez donc spécifier les champs de requête selon les besoins. Cependant, il n'y a pas de statistiques de journal qui vous sont propres, vous devez donc utiliser LOG4J pour enregistrer les journaux.
Hibernate peut également écrire SQL lui-même pour spécifier les champs qui doivent être interrogés, mais cela détruit la simplicité du développement d'hibernate. Cependant, Hibernate a ses propres statistiques de journal.
4. Comparaison de l'évolutivité de la base de données
Étant donné que tous les SQL sont écrits sur la base de données, MyBatis a une mauvaise évolutivité et migration.
La relation spécifique entre Hibernate et la base de données est en XML, donc HQL n'est pas très préoccupé par la base de données qu'il utilise.
5. Comparaison des mécanismes de mise en cache
Similitudes: En plus de l'utilisation du mécanisme de mise en cache par défaut du système, le cache de deuxième niveau de Hibernate et Mybatis peut complètement écraser le comportement du cache en implémentant votre propre cache ou en créant des adaptateurs pour d'autres solutions de cache tierces.
Différences: la configuration du cache secondaire de Hibernate est configurée en détail dans le fichier de configuration généré par SessionFactory, puis il est configuré dans la carte de table-objet spécifique quel cache est configuré.
La configuration du cache secondaire de MyBatis est configurée en détail dans chaque carte de table-objet spécifique, de sorte que différents mécanismes de cache peuvent être personnalisés pour différentes tables. Et MyBatis peut partager la même configuration et instance de cache dans l'espace de noms, qui est implémenté via Cache-Ref.
Comparaison des deux: Parce que Hibernate a un bon mécanisme de gestion pour les 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 secondaire, le système rapportera une erreur et une invite.
À cet égard, MyBatis nécessite des soins spéciaux lors de l'utilisation du cache L2. Si la portée des opérations de mise à jour des données ne peut pas être entièrement déterminée, évitez l'utilisation aveugle du cache. Sinon, l'apparition de données sales apportera de grands dangers cachés au fonctionnement normal du système.
6. Résumé:
Mybatis: petit, pratique, efficace, simple, direct, semi-automatique
Hibernate: puissant, pratique, efficace, complexe, complet automatique
HiberNate et MyBatis peuvent tous deux générer SessionFactory à partir du fichier de configuration XML via SessionFactoryBuider, puis générer la session à partir de sessionFactory, et enfin 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 être facile à maîtriser.
L'avantage de l'hibernate est que le développement de la couche DAO est plus simple que MyBatis, qui nécessite le maintien de la cartographie SQL et des résultats. La portabilité de la base de données est très bonne, la portabilité de la base de données MyBatis n'est pas bonne et différentes bases de données doivent écrire différents SQL. Il existe un meilleur mécanisme de mise en cache de niveau 2, et la mise en cache tierce peut être utilisée. Mybatis lui-même fournit un mauvais mécanisme de mise en cache.
Mybatis:
1. Il est simple de démarrer, d'apprendre et d'utiliser, et fournit une fonction de liaison d'objets automatique pour les requêtes de base de données, et poursuit une bonne expérience dans l'utilisation de SQL. Il est tout à fait parfait pour des projets qui n'ont pas de tels exigences de modèle d'objet.
2. Une optimisation SQL plus détaillée peut être effectuée, ce qui peut réduire les champs de requête.
3. L'inconvénient est que le cadre est encore relativement simple et que les fonctions sont toujours manquantes. Bien que le code de liaison des données soit simplifié, toute la requête de la base de données sous-jacente doit être écrite par vous-même, la charge de travail est relativement grande et il n'est pas facile de s'adapter à la modification rapide de la base de données.
4. Le mécanisme de mise en cache secondaire est pauvre.
hiberner:
1. Fonctions puissantes, bonne base de données non pertinente et fortes capacités de cartographie O / R. Si vous êtes assez compétent en hibernate et correctement encapsulé Hibernate, alors l'ensemble du code de couche de persistance de votre projet sera assez simple, il y a très peu de code à écrire, la vitesse de développement est très rapide et c'est très cool.
2. Il existe un meilleur mécanisme de mise en cache secondaire et la mise en cache tierce peut être utilisée.
3. L'inconvénient est que le seuil d'apprentissage n'est pas faible, et vous devez y être compétent. Comment concevoir la cartographie O / R, comment équilibrer le modèle de performances et d'objets, et comment utiliser Hibernate Well nécessite votre expérience et votre capacité pour être fortes.
Permettez-moi de vous donner une métaphore vivante:
Mybatis: Les outils mécaniques sont faciles à utiliser et peuvent être utilisés dès que possible, mais le travail doit encore être fait par vous-même, mais les outils sont vivants, alors comment les faire dépend de moi.
Hibernate: Robot intelligent, mais il est très coûteux de le développer (apprentissage, compétence) et travailler peut s'en débarrasser, mais seulement ce qu'il peut faire.