Préface
Dans le développement de Javaweb, les plus classiques sont la combinaison SSH Framework et la combinaison de framework SSM. Maintenant, de nombreuses sociétés informatiques sont prêtes à utiliser SSM. Pour H et M ici, Hibernate et Mybatis, permettez-moi d'en parler brièvement aujourd'hui.
Jouer à la hache dans la porte
Pendant les cours, je dis souvent aux étudiants que vous devez comprendre n'importe quelle technique:
Explication de la connaissance
Hibernate et Mybatis sont tous deux très populaires ORM (mappage relationnel d'objet, pour le dire franchement, une technologie qui mappe aux bases de données) des cadres de couche de persistance. En substance, il est toujours encapsulé JDBC pour faciliter notre utilisation et simplifier notre développement. Découvrez d'abord quelques problèmes:
Pourquoi l'introduction d'une couche de persistance peut-elle résoudre ce problème? Analyse: Un mécanisme peut être introduit dans la couche de persistance, qui peut être utilisée comme traduction. Pour différentes bases de données en bas, les instructions HQL et les instructions de requête dynamique sont traduites en différentes instructions SQL. Cela résout le problème qu'il n'est pas nécessaire de modifier les instructions SQL après avoir remplacé la base de données, et la quantité de code sera considérablement réduite.
C'est tellement bon, alors comment Hibernate et Mybatis ont-ils mis en œuvre la solution ci-dessus, c'est-à-dire comment leur ORM a-t-il été implémenté?
Hiberner
Dans Hibernate, ce mécanisme est un fichier de configuration hibernate.cfg.xml (placé dans le répertoire SRC)
<hibernate-configuration> <session-factory> <propriété name = "connection.url"> jdbc: mysql: // localhost / hibernate </ propriété> <propriété name = "Connection.Username"> root </ propriété> <propriété name = "Connection.password"> saber </ / propriété> < name = "Connection.driver_class"> com.mysql.jdbc.driver </ propriété> <propriété name = "dialect"> org.hibernate.dialect.mysqldialect </ propriété> <! - Ddl Statement crée automatiquement des tables -> <propriété name = "hbm2ddl.Auto"> non </ / propriété> <prewetwa name = "format_sql"> true </ propriété> <! - Configuration du pool de connexion -> <propriété name = "hibernate.connection.provider_class"> org.hibernate.service.jdbc.connections.internal.c3p0connectionprovider </ / propriété> <! Hibernate par défaut est à 1 -> <propriété name = "hibernate.c3p0.min_size"> 5 </ propriété> <! - Le nombre maximum de connexions JDBC dans le pool de connexions. Hibernate par défaut est à 100 -> <propriété name = "hibernate.c3p0.max_size"> 20 </ propriété> <! - Quand supprimer une connexion inactive en secondes du pool de connexion. La valeur par défaut est 0, jamais expire -> <propriété name = "hibernate.c3p0.timeout"> 300 </prophed> <! - Le nombre d'instructions précompilées mises en cache. Utilisé pour améliorer les performances. Hibernate par défaut est à 0, le cache n'est pas disponible -> <propriété name = "hibernate.c3p0.max_statements"> 100 </ propriété> <! - Temps inactif (en secondes) avant qu'une connexion ne soit automatiquement vérifiée. Hibernate par défaut est à 0 -> <propriété name = "hibernate.c3p0.idle_test_period"> 3000 </ propriété> <! - Exécution indépendamment. Si vous obtenez la session via getCurrentSession (), vous devez le définir comme suit -> <propriété named = "current_session_context_class"> thread </ propriété> <! - Deux façons de mapper des classes persistantes -> <mapping /> <mapping ressource = "com / serup / model / enseign.hbm.xml" /> </ession-factory> </ hibernate-configrugy>
Une fois que le projet a changé la base de données, ce qui doit être modifié n'est que plusieurs attributs dans ce fichier, et le code logique de la couche commerciale n'a pas besoin d'être modifié.
L'utilisation d'hibernate pour le développement est recommandée:
** Objet de domaine ---> Mapping ---> Base de données en d'autres termes, les objets et les tables doivent avoir un mappage, et ce mappage a deux méthodes de configuration dans Hibernate **
1. Méthode XML (nom de classe.hbm.xml)
Établir une relation de cartographie entre la table et la classe via le fichier HBM
2. Méthode d'annotation
Plus tard, avec l'ingénierie inverse, il est devenu beaucoup plus simple et vous pouvez générer directement le fichier correspondant via la table de base de données.
Mybatis
Dans MyBatis, ce mécanisme s'appuie également sur un fichier de configuration MyBatis-Config.xml (placé dans le répertoire SRC)
<FIFIGIFIE> <Propriétés Ressource = "SqlServeRfo.Properties" /> <! - Fichier de configuration de la base de données -> <typeAliases> <package name = "com.demo.domain" /> <! type = "jdbc" /> <dataSource Type = "poolled"> <propriété name = "driver" value = "$ {driver}" /> <propriété name = "url" value = "$ {url}" /> <propriété name = "username" value = "$ {username}" /> <propriété name = "mot de passe" value = "$ {mot de passe}" /> </ dataour> </ Environments> <mappers> <! - Mappage des fichiers pour effectuer des opérations CRUD spécifiques -> <mapper ressource = "com / démo / domaine / userMapper.xml" /> </mappers> </ / configuration> De cette façon, chaque fois que vous modifiez la base de données, il vous suffit de modifier le fichier de configuration.
L'utilisation de MyBatis pour le développement recommande ceci:
** Créez une base de données et créez diverses tables ---> L'ingénierie inverse génère automatiquement le code requis pour l'exécution de MyBatis (Mappeur.java, Mappel.xml, PO ..) ---> Écrivez la couche de contrôle et la couche de service en fonction de la logique métier. **
Différences
Il y a diverses comparaisons sur Internet, et je ne parle que de différents points, je pense
1. Hibernate a un langage de requête orienté objet appelé HQL. C'est très puissant. Il permet aux singes qui ne connaissent pas les instructions SQL d'ajouter, de supprimer, de modifier et de rechercher la base de données, mais c'est aussi sa faiblesse. Les instructions SQL ne peuvent pas être optimisées.
2. MyBatis nécessite la configuration de l'instruction SQL, ce qui signifie qu'il nécessite toujours des connaissances de base de la base de données pour commencer. De plus, les débutants doivent avoir rencontré de nombreux pièges dans la cartographie des résultats.
3. Je n'ai jamais réalisé un projet particulièrement important. S'il n'y a pas d'exigences de performances spéciales, Hibernate est toujours plus facile d'implémenter les fonctions.
Réglage du système
Solution de réglage d'Hibernate
Solution de réglage mybatis
Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.