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

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

Sep 11, 2020 pm 03:59 PM
java Questions d'entrevue

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é.

Les instances de l'état instantané peuvent devenir durables en appelant la méthode Save (), Persist () ou SaveorUpdate (); lock() ou replite() devient persistante. save() et persist() déclencheront des instructions SQL INSERT, et update() ou merge() déclencheront des instructions UPDATE.

La différence entre save() et update() est que l'un transforme un objet transitoire en un état persistant et l'autre transforme un objet libre en un état persistant. La méthode merge() peut compléter les fonctions des méthodes save() et update(). Son intention est de fusionner le nouvel état dans l'objet persistant existant ou de créer un nouvel objet persistant.

Pour la méthode persist(), suivez les instructions de la documentation officielle :

1. La méthode persist() persiste une instance transitoire, mais elle ne garantit pas que l'identifiant sera rempli dans immédiatement. Dans une instance persistante, le remplissage de l'identifiant peut être reporté jusqu'au moment du vidage

2. La méthode persist() garantit que lorsqu'elle est appelée en dehors d'une transaction, elle ne déclenchera pas d'instruction INSERT ; . Lorsque nécessaire Lors de l'encapsulation d'un long processus de session, la méthode persist() est nécessaire

3. La méthode save() ne garantit pas l'élément 2. Elle renvoie un identifiant, elle exécutera donc immédiatement l'instruction INSERT ; . Que ce soit à l'intérieur ou à l'extérieur des affaires. Quant à la différence entre la méthode lock() et la méthode update(), la méthode update() change un objet dans un état détaché qui a été transformé en un état persistant, la méthode lock() change un objet dans un état détaché ; cela n’est pas devenu un état persistant.

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 :

cours java

) 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!

Déclaration de ce site Web
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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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

Guide de construction d'Agnes Tachyon | Un joli Musume Derby
2 Il y a quelques semaines By Jack chen
Oguri Cap Build Guide | Un joli Musume Derby
3 Il y a quelques semaines By Jack chen
Péx: comment raviver les joueurs
4 Il y a quelques semaines By DDD
Guide de construction de Grass Wonder | Uma musume joli derby
1 Il y a quelques semaines By Jack chen
Pic comment émoter
3 Il y a quelques semaines By Jack chen

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Conseils pour écrire des commentaires PHP 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 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 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 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 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 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 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 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.

See all articles