Questions d'entretien de base Java haute fréquence——(8)

91. Qu'est-ce que l'ORM ?
(Recommandations pour des questions d'entretien plus connexes : questions et réponses d'entretien Java)
Le mappage objet-relationnel (ORM) est un programme conçu pour résoudre la technologie qui résout le problème d'inadéquation entre le modèle orienté objet et le modèle relationnel de la base de données ;
En termes simples, ORM utilise des métadonnées qui décrivent le mappage entre les objets et les bases de données (en Java, XML ou des annotations peuvent être utilisées), persistent automatiquement objets du programme vers une base de données relationnelle ou convertir les lignes d'une table de base de données relationnelle en objets Java. Son essence est de convertir les données d'une forme à une autre.
92. SessionFactory dans Hibernate est-il thread-safe ? La session est-elle thread-safe (deux threads peuvent-ils partager la même session) ?
SessionFactory correspond à un concept de stockage de données d'Hibernate. Il est thread-safe et est accessible simultanément par plusieurs threads. SessionFactory n'est généralement construit qu'au démarrage. Pour les applications, il est préférable d'encapsuler SessionFactory via le mode singleton pour un accès facile.
La session est un objet léger non thread-safe (la session ne peut pas être partagée entre les threads), qui représente une unité de travail qui interagit avec la base de données. La session est créée par SessionFactory et elle sera fermée une fois la tâche terminée. La session est l'interface principale fournie par le service de couche de persistance.
La session retardera l'obtention de la connexion à la base de données (c'est-à-dire qu'elle ne l'obtiendra qu'en cas de besoin). Afin d'éviter de créer trop de sessions, vous pouvez utiliser ThreadLocal pour lier la session au thread actuel, afin que le même thread obtienne toujours la même session. La méthode getCurrentSession() de SessionFactory dans Hibernate 3 peut le faire.
93. Que font les méthodes save(), update(), merge(), lock(), saveOrUpdate() et persist() de Session ? Quelle est la différence ?
Les objets Hibernate ont trois états : transitoire, persistant et détaché.
94, explique le processus de chargement des objets entité par session.
1. Avant d'appeler la fonction de requête de base de données, la session recherchera d'abord le type d'entité et la clé primaire dans le cache de premier niveau. Si la recherche dans le cache de premier niveau réussit et que l'état des données est légal, elle reviendra directement ;
2. S'il n'y a aucun résultat dans le cache de niveau. Ensuite, la session recherchera dans l'enregistrement NonExists actuel (équivalent à une liste noire de requêtes. Si des requêtes invalides répétées apparaissent, un jugement rapide peut être fait pour améliorer les performances) . Si les mêmes conditions de requête existent dans NonExists, Alors renvoie null;
3. Si la requête du cache de premier niveau échoue, interrogez le cache de deuxième niveau. Si le cache de deuxième niveau atteint, retournez directement
4. . Si la requête précédente échoue, émettez une instruction SQL. Si la requête n'est pas trouvée, pour l'enregistrement correspondant, ajoutez la requête aux NonExists de la session et enregistrez-la, et renvoyez null
5. Obtenez le ResultSet selon ; à la configuration de mappage et à l'instruction SQL, et créez l'objet d'entité correspondant ;
6. Incorporez l'objet dans la gestion de session (cache niveau 1)
7. S'il existe un intercepteur correspondant, exécutez la méthode onLoad de ; l'intercepteur ;
8. S'il est activé et configuré pour utiliser le cache de deuxième niveau, l'objet de données sera inclus dans le cache de deuxième niveau
9. Renvoie l'objet de données.
95. Quelle est la différence entre utiliser # et $ pour écrire des espaces réservés dans MyBatis ?
# Traitez les données entrantes comme une chaîne et ajoutez automatiquement des guillemets aux données entrantes ;
Remarque : l'utilisation de l'espace réservé $ peut conduire à des attaques par injection SQL. N'utilisez pas $ où # peut être utilisé. Lors de l'écriture de la clause order by, vous devez utiliser $ au lieu de #.
96, 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.
(Recommandation du didacticiel vidéo :
) 97. 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 les instructions SQL nous-mêmes, mais MyBatis fournit la fonction de. SQL dynamique pour résoudre ce problème. Les principaux éléments utilisés pour implémenter le SQL dynamique dans MyBatis sont :- if - choisir / quand / sinon - trim - où - set - foreach
Exemple d'utilisation :
< ;select id="foo" paramètreType="Blog" resultType="Blog">
98. Quelles sont les lacunes de la programmation JDBC ? Comment MyBatis résout-il ces problèmes ?
1. JDBC : la création et la publication fréquentes de liens de base de données entraînent un gaspillage de ressources système et affectent les performances du système. Ce problème peut être résolu en utilisant un pool de connexions à la base de données.
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 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 transmettre des paramètres à l'instruction SQL, car la condition Where de l'instruction SQL n'est pas nécessairement certaine, elle peut être plus ou moins grande et les espaces réservés doivent correspondre aux paramètres un à 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 en objets pojo.
MyBatis : Mybatis mappe automatiquement les résultats d'exécution SQL aux objets Java.
99. 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 des annotations. utiliser java L'objet et l'instruction SQL sont mappés pour générer le SQL exécuté final, et enfin le résultat de l'exécution SQL est mappé pour générer un objet 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 et une grande flexibilité. Il est très approprié pour le développement de logiciels qui n'ont pas d'exigences élevées en matière de relationnel. modèles de données, tels que les logiciels Internet et les logiciels opérationnels d'entreprise, etc., car les exigences de ce type de logiciel changent fréquemment, une fois les exigences modifiées, 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 économiser beaucoup. du code et améliorer 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 que les besoins de l'utilisateur peuvent être satisfaits dans un environnement de ressources limitées, l'architecture logicielle avec une bonne maintenance et une bonne évolutivité est une bonne architecture, donc le framework n'est que le meilleur.
(Vous pouvez également parler en fonction de votre propre compréhension ici, ne soyez pas submergé)
100, 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 du cache et le renvoie sans accéder à la 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'une requête 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 associés recommandés : Tutoriel d'introduction à 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!
Outils d'IA chauds
Undress AI Tool
Images de déshabillage gratuites
Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes
AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.
Clothoff.io
Dissolvant de vêtements AI
Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !
Article chaud
Outils chauds
Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit
SublimeText3 version chinoise
Version chinoise, très simple à utiliser
Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP
Dreamweaver CS6
Outils de développement Web visuel
SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)
Sujets chauds
Conseils pour écrire des commentaires PHP
Jul 18, 2025 am 04:51 AM
La clé pour rédiger des commentaires PHP est de clarifier l'objectif et les spécifications. Les commentaires devraient expliquer "pourquoi" plutôt que "ce qui a été fait", en évitant la redondance ou trop de simplicité. 1. Utilisez un format unifié, tel que DocBlock (/ * /) pour les descriptions de classe et de méthode afin d'améliorer la lisibilité et la compatibilité des outils; 2. Soulignez les raisons de la logique, telles que pourquoi les sauts JS doivent être sortis manuellement; 3. Ajoutez une description d'une vue d'ensemble avant le code complexe, décrivez le processus dans les étapes et aidez à comprendre l'idée globale; 4. Utilisez TODO et FIXME Rationalement pour marquer des éléments et des problèmes de tâches pour faciliter le suivi et la collaboration ultérieurs. De bonnes annotations peuvent réduire les coûts de communication et améliorer l'efficacité de la maintenance du code.
Rédaction de commentaires PHP efficaces
Jul 18, 2025 am 04:44 AM
Les commentaires ne peuvent pas être négligents car ils veulent expliquer les raisons de l'existence du code plutôt que des fonctions, telles que la compatibilité avec les anciennes interfaces ou les restrictions tierces, sinon les personnes qui lisent le code ne peuvent s'appuyer que sur de la devinettes. Les zones qui doivent être commentées comprennent des jugements conditionnels complexes, une logique spéciale de gestion des erreurs et des restrictions de dérivation temporaires. Une façon plus pratique d'écrire des commentaires consiste à sélectionner des commentaires en une seule ligne ou à bloquer les commentaires en fonction de la scène. Utilisez des commentaires sur le bloc de documents pour expliquer les paramètres et les valeurs de retour au début des fonctions, des classes et des fichiers, et gardez les commentaires à jour. Pour une logique complexe, vous pouvez ajouter une ligne à la précédente pour résumer l'intention globale. En même temps, n'utilisez pas de commentaires pour sceller le code, mais utilisez des outils de contrôle de version.
Améliorer la lisibilité avec les commentaires
Jul 18, 2025 am 04:46 AM
La clé pour écrire de bons commentaires est d'expliquer "pourquoi" plutôt que "ce qui a été fait" pour améliorer la lisibilité du code. 1. Les commentaires devraient expliquer des raisons logiques, telles que les considérations derrière la sélection de la valeur ou le traitement; 2. Utilisez des annotations de paragraphe pour une logique complexe pour résumer l'idée globale des fonctions ou des algorithmes; 3. Maintenir régulièrement des commentaires pour garantir la cohérence avec le code, éviter les tromperies et supprimer le contenu obsolète si nécessaire; 4. Vérifiez de manière synchrone les commentaires lors de l'examen du code et enregistrez la logique publique via des documents pour réduire le fardeau des commentaires du code.
Commentaires PHP efficaces
Jul 18, 2025 am 04:33 AM
La clé pour rédiger des commentaires PHP est claire, utile et concise. 1. Les commentaires devraient expliquer l'intention derrière le code plutôt que de simplement décrire le code lui-même, comme expliquer l'objectif logique des jugements conditionnels complexes; 2. Ajouter des commentaires aux scénarios clés tels que les valeurs magiques, la compatibilité du code ancien, les interfaces API, etc. pour améliorer la lisibilité; 3. Évitez le contenu du code en double, gardez-le concis et spécifique et utilisez des formats standard tels que PHPDOC; 4. Les commentaires doivent être mis à jour de manière synchrone avec le code pour garantir la précision. De bons commentaires doivent être pensés du point de vue des autres, réduire le coût de la compréhension et devenir un dispositif de navigation de compréhension du code.
Configuration de l'environnement de développement PHP
Jul 18, 2025 am 04:55 AM
La première étape consiste à sélectionner le package d'environnement intégré XAMPP ou MAMP pour créer un serveur local; La deuxième étape consiste à sélectionner la version PHP appropriée en fonction des besoins du projet et de configurer la commutation de la version multiple; La troisième étape consiste à sélectionner VScode ou PhpStorm comme éditeur et déboguer avec xdebug; De plus, vous devez installer Composer, PHP_CODESNIFFER, PHPUNIT et d'autres outils pour aider au développement.
PHP commentant la syntaxe
Jul 18, 2025 am 04:56 AM
Il existe trois façons courantes d'utiliser les commentaires PHP: les commentaires en une seule ligne conviennent à l'explication brièvement de la logique de code, telle que // ou # pour l'explication de la ligne actuelle; Commentaires multi-lignes /*...*/ convient à une description détaillée des fonctions ou des classes; COMMENTAIRES DOCUMENTS DOCBLOCK Commencez par / ** pour fournir des informations rapides pour l'IDE. Lorsque vous l'utilisez, vous devez éviter les bêtises, continuez à mettre à jour de manière synchrone et n'utilisez pas de commentaires pour bloquer les codes pendant longtemps.
Opérateurs de comparaison PHP
Jul 18, 2025 am 04:57 AM
Les opérateurs de comparaison PHP doivent faire attention aux problèmes de conversion de type. 1. Utiliser == pour comparer les valeurs uniquement, et la conversion de type sera effectuée, comme 1 == "1" est vraie; 2. Utilisation === Pour nécessiter la même valeur que le type, tel que 1 === "1" est faux; 3. La comparaison de taille peut être utilisée sur les valeurs et les chaînes, telles que "Apple"
Comprendre les commentaires PHP
Jul 18, 2025 am 04:24 AM
Les commentaires PHP sont des parties du code utilisées pour interpréter la logique, les tâches de balise ou bloquer temporairement le code et ne sont pas exécutées par le serveur. Ses fonctions principales incluent: 1. Améliorer la lisibilité du code, ce qui facilite une compréhension rapide des autres et du moi futur; 2. Prend en charge deux formats: commentaires en une seule ligne (// ou #) et commentaires multi-lignes (//); 3. Common utilise des descriptions de fonctions de couverture, des explications logiques complexes, des marques de TODO et du code de désactivation pendant le débogage; 4. Les commentaires efficaces devraient éviter le code en double, expliquer les raisons plutôt que les opérations, le garder concis et ajouter des enregistrements de version si nécessaire, améliorant ainsi considérablement l'efficacité de maintenance du code.


