Maison >Java >Javacommencer >Questions d'entretien sur la couche de persistance Java (2)
1. Expliquez le rôle de l'espace de noms dans MyBatis.
Dans les grands projets, il peut y avoir un grand nombre d'instructions SQL. À l'heure actuelle, il n'est pas facile de donner à chaque instruction SQL une identification (ID) unique. Afin de résoudre ce problème, dans MyBatis, vous pouvez créer un espace de noms unique pour chaque fichier de mappage, afin que chaque instruction SQL définie dans ce fichier de mappage devienne un ID défini dans cet espace de noms.
Tant que nous pouvons garantir que cet ID est unique dans chaque espace de noms, même si les ID d'instruction dans différents fichiers de mappage sont les mêmes, les conflits ne se produiront plus.
(Tutoriel recommandé : Java Quick Start)
2. Que signifie le SQL dynamique dans MyBatis ?
Pour certaines requêtes complexes, nous pouvons spécifier plusieurs conditions de requête, mais ces conditions peuvent exister ou non. Si nous n'utilisons pas le framework de couche de persistance, nous devrons peut-être assembler le SQL. déclarations nous-mêmes, mais MyBatis fournit des fonctionnalités SQL dynamiques pour résoudre ce problème.
Les éléments utilisés pour implémenter le SQL dynamique dans MyBatis incluent principalement :
- if - choisir / quand / sinon - trim - où - set - foreach
Exemples d'utilisation :
<select id="foo" parameterType="Blog" resultType="Blog"> select * from t_blog where 1 = 1 <if test="title != null"> and title = #{title} </if> <if test="content != null"> and content = #{content} </if> <if test="owner != null"> and owner = #{owner} </if> </select>
3. Quelles sont les lacunes de la programmation JDBC ? Comment MyBatis résout-il ces problèmes ? .
MyBatis : configurez le pool de liaisons de données dans SqlMapConfig.xml et utilisez le pool de connexions pour gérer les liens de base de données. (2) JDBC : les instructions SQL sont écrites dans le code, ce qui rend le code difficile à maintenir. L'application réelle de SQL peut changer considérablement et les modifications SQL nécessitent des modifications du code Java. MyBatis : configurez l'instruction SQL dans le fichier XXXXmapper.xml et séparez-la du code Java. (3) JDBC : il est difficile de passer des paramètres à l'instruction sql, car la condition Where de l'instruction sql n'est pas nécessairement certaine, elle peut l'être plus ou moins, et les espaces réservés doivent correspondre à la paramètres un à un. MyBatis : Mybatis mappe automatiquement les objets Java aux instructions SQL. (4) JDBC : il est difficile d'analyser l'ensemble de résultats. Les modifications SQL entraînent des modifications dans le code d'analyse, et il doit être parcouru avant l'analyse. Il serait plus pratique d'analyser les enregistrements de la base de données. objets pojo. MyBatis : Mybatis mappe automatiquement les résultats d'exécution SQL aux objets Java.4. Quelles sont les différences entre MyBatis et Hibernate ?
(1) Mybatis est différent d'hibernate. Ce n'est pas entièrement un framework ORM car MyBatis nécessite que les programmeurs écrivent eux-mêmes des instructions SQL. Cependant, mybatis peut configurer de manière flexible les instructions SQL à exécuter via XML ou. annotations. et mapper les objets Java et les instructions SQL pour générer le SQL final exécuté, et enfin mapper les résultats de l'exécution de SQL pour générer des objets Java.
(2) Mybatis a un faible seuil d'apprentissage et est facile à apprendre. Les programmeurs peuvent écrire directement du SQL original, qui peut contrôler strictement les performances d'exécution du SQL. Il a une grande flexibilité et est très adapté au développement de logiciels qui ne le font pas. ont des exigences élevées en matière de modèles de données relationnelles, tels que les logiciels Internet, les logiciels d'exploitation d'entreprise, etc., car les besoins de ce type de logiciel changent fréquemment, une fois les besoins modifiés, les résultats doivent être générés rapidement. Cependant, le principe de flexibilité est que mybatis ne peut pas être indépendant de la base de données. Si vous devez implémenter un logiciel prenant en charge plusieurs bases de données, vous devez personnaliser plusieurs ensembles de fichiers de mappage SQL, ce qui représente une lourde charge de travail. (3) Hibernate possède de fortes capacités de mappage objet/relationnel et une bonne indépendance de base de données. Pour les logiciels ayant des exigences élevées en matière de modèles relationnels (tels que les logiciels personnalisés avec des exigences fixes), si vous utilisez Hibernate pour le développer, vous pouvez. économisez beaucoup de code et améliorez l’efficacité. Cependant, l'inconvénient d'Hibernate est que le seuil d'apprentissage est élevé, et le seuil de maîtrise est encore plus élevé. De plus, comment concevoir le mappage O/R, comment peser les performances et le modèle objet, et comment bien utiliser Hibernate nécessite. forte expérience et capacité. En bref, tant qu'une architecture logicielle avec une bonne maintenabilité et évolutivité peut être réalisée en fonction des besoins de l'utilisateur dans un environnement de ressources limitées, c'est une bonne architecture, donc le framework n'est le meilleur que s'il est approprié.5. Parlez brièvement du cache de premier niveau et du cache de deuxième niveau de MyBatis ?
Mybatis interroge d'abord l'ensemble de résultats dans le cache. S'il n'y a pas d'ensemble de résultats, il interroge la base de données. S'il y en a, il récupère l'ensemble de résultats dans le cache et le renvoie sans passer par le cache. base de données. Le cache de stockage interne de Mybatis utilise un HashMap et la clé est l'instruction hashCode+sqlId+Sql. value est l'objet Java généré par le mappage à partir de la requête.
Le cache de deuxième niveau de Mybatis est le cache de requêtes. Sa portée est l'espace de noms d'un mappeur, c'est-à-dire qu'interroger SQL dans le même espace de noms peut obtenir des données du cache. Le cache de deuxième niveau peut s'étendre sur SqlSession. Tutoriels vidéo associés recommandés :Tutoriel vidéo Java
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!