JavaRush /Blog Java /Random-FR /Questions d'entretien chez Hibernate
Dr-JohnZoidberg
Niveau 41
Киев

Questions d'entretien chez Hibernate

Publié dans le groupe Random-FR
Cet article est une traduction et une amélioration d'articles étrangers (une liste de ressources est répertoriée à la fin de l'article). Les réponses à certaines questions sont développées, des liens vers des ressources tierces sont fournis qui contiennent des réponses pouvant survenir au cours du processus de lecture. 1) Qu'est-ce que la mise en veille prolongée ? Il s'agit d'un cadre de mappage objet-relationnel d'entités dans des bases de données relationnelles traditionnelles. Les principales fonctionnalités du framework : 1) Génération et mise à jour automatiques des tables dans les bases de données ; 2) Étant donné que les principales requêtes sur la base de données (sauvegarde, mise à jour, suppression et recherche) sont présentées comme des méthodes du framework, le code écrit par le développeur est considérablement réduit ; 3) Fournit l'utilisation d'un langage de type SQL (HQL - langage de requête hibernate). Les requêtes HQL peuvent être écrites avec des objets de données (classes POJO préparées pour travailler avec une base de données). 2) Comment hiberneraide à la programmation ? Hibernate implémente un certain nombre de fonctionnalités qui simplifient grandement le travail du développeur. — L'une de ces fonctionnalités est qu'hibernate permet au développeur d'éviter d'écrire la plupart des requêtes SQL (elles sont déjà implémentées, il suffit d'utiliser les méthodes fournies par le framework). — Sous le capot, Hibernate dispose de nombreux outils utiles qui accélèrent considérablement l'application, les plus notables étant la mise en cache à deux niveaux et le réglage fin des retraits paresseux et de récupération. — Génère des tables dans la base de données elle-même. 3) Méthodes de configuration du travail avec Hibernate. Il existe quatre manières de configurer le travail avec Hibernate : - en utilisant des annotations ; - hibernate.cfg.xml ; - hiberner.propriétés ; - persistance.xml. La méthode de configuration la plus courante : via les annotations et le fichier persistence.xml, comme pour les fichiers hibernate.properties et hibernate.cfg.xml, alors hibernate.cfg.xml est plus important (si l'application possède les deux fichiers, alors les paramètres de le fichier hibernate.cfg est accepté.xml). La configuration avec des annotations, bien que pratique, n'est pas toujours possible ; par exemple, si vous souhaitez avoir différentes configurations d'entités pour différentes bases de données ou pour différentes situations, vous devez alors utiliser des fichiers de configuration XML. 4) Quelles interfaces clés Hibernate utilise-t-il ? Il existe cinq interfaces clés utilisées dans chaque application liée à Hibernate : - Interface de session ; -Interface SessionFactory ; —Interface de configuration ; — Interface de transactions ; — Interfaces de requêtes et de critères. 5) Quel est le rôle de l’interface Session dans Hibernate ? La session est l'interface principale chargée de communiquer avec la base de données. Il permet également de créer des objets de requête pour obtenir des objets persistants. (objet persistant - un objet qui est déjà dans la base de données ; objet de requête - un objet qui est obtenu lorsque l'on reçoit le résultat d'une requête dans la base de données, c'est avec cela que fonctionne l'application). L'objet Session peut être obtenu auprès de SessionFactory : Session session = sessionFactory.openSession(); Le rôle de l'interface Session : est un wrapper pour la connexion jdbc à la base de données ; (https://ru.wikipedia.org/wiki/Java_Database_Connectiv..) - est une usine de transactions (selon la documentation officielle transaction - permet à l'application de définir des unités de travail, ce qui, en substance, signifie que la transaction définit les limites des opérations associées à la base de données). — est le gardien du cache obligatoire de premier niveau. 6) Quel est le rôle de l'interface SessionFactory dans Hibernate ? C'est à partir de l'objet SessionFactory que l'on obtient des objets de type Session. Il n’existe qu’une seule SessionFactory pour l’ensemble de l’application et elle est initialisée au démarrage de l’application. SessionFactory met en cache les métadonnées et les requêtes SQL fréquemment utilisées par l'application pendant le fonctionnement. Il met également en cache les informations reçues dans l'une des transactions et peuvent être utilisées dans d'autres transactions. L'objet SessionFactory peut être obtenu à l'aide de l'appel suivant : SessionFactory sessionFactory = configuration.buildSessionFactory(); 7) Quels types de collections sont proposés dans Hibernate ? Sac, ensemble, liste, carte, tableau. 8) Qu’est-ce qu’une collection de type Bag et pourquoi est-elle utilisée ? Dans son implémentation, le type de collection Bag est très similaire à Set, la différence est que Bag peut stocker des valeurs en double. Bag stocke une liste d’éléments non indexés. La plupart des tables de la base de données ont des index qui affichent la position d'un élément de données les uns par rapport aux autres ; ces index sont représentés dans la table sous forme de colonne distincte. Avec le mappage objet-relationnel, les valeurs d'une colonne d'index sont mappées à un index dans un tableau, un index dans une liste ou une clé dans une carte. Si vous avez besoin d'obtenir une collection d'objets qui ne contiennent pas de données d'index, vous pouvez alors utiliser des collections de type Bag ou Set (les collections contiennent des données sous forme non triée, mais peuvent être triées en fonction de la demande). 9) Quelle est la différence dans le fonctionnement des méthodes load(); et obtenir();? méthode load() ; généralement utilisé lorsque vous n'êtes pas sûr que l'objet demandé soit déjà dans la base de données. Si l'objet n'est pas trouvé, alors la méthode lève une exception. Si l'objet est trouvé, la méthode renvoie un objet proxy, qui est un lien vers l'objet situé dans la base de données (la requête de la base de données n'a pas encore été faite, une sorte de récupération paresseuse), une requête directe à la base de données lorsque nous accédons directement à l'objet requis via un objet proxy. méthode get(); utilisé alors, vous n'êtes pas sûr à 100 pour cent si l'objet demandé se trouve dans la base de données. Dans le cas de l'accès à un objet inexistant, la méthode get(); renverra null. Si l'objet est trouvé, la méthode get() ; renverra l'objet lui-même et la requête dans la base de données sera effectuée immédiatement. 10) Que récupère Lazy dans Hibernate ? Le type d'extraction différée dans Hibernate est associé aux entités feuille (enfants) et définit une politique d'extraction partagée en cas de demande d'extraction d'une entité parent. Un exemple simple : il existe une entité House. Il stocke des informations sur son numéro, sa rue, le nombre d'appartements et des informations sur les familles qui vivent dans les appartements ; ces familles forment une entité enfant par rapport à l'entité Maison. Lorsque nous demandons des informations sur une maison, il peut s'avérer totalement inutile pour nous de connaître les informations sur les familles qui y vivent. Ici, la récupération paresseuse vient à notre aide, ce qui nous permet de configurer l'entité Maison de manière à ce que les informations sur les familles soient fournies uniquement. sur demande, cela obscurcit considérablement la demande et accélère l'application. ©dev-bay La plupart des tables de la base de données ont des index qui affichent la position d'un élément de données les uns par rapport aux autres ; ces index sont représentés dans la table sous forme de colonne distincte. Avec le mappage objet-relationnel, les valeurs d'une colonne d'index sont mappées à un index dans un tableau, un index dans une liste ou une clé dans une carte. Si vous avez besoin d'obtenir une collection d'objets qui ne contiennent pas de données d'index, vous pouvez alors utiliser des collections de type Bag ou Set (les collections contiennent des données sous forme non triée, mais peuvent être triées en fonction de la demande). 9) Quelle est la différence dans le fonctionnement des méthodes load(); et obtenir();? méthode load() ; généralement utilisé lorsque vous n'êtes pas sûr que l'objet demandé soit déjà dans la base de données. Si l'objet n'est pas trouvé, alors la méthode lève une exception. Si l'objet est trouvé, la méthode renvoie un objet proxy, qui est un lien vers l'objet situé dans la base de données (la requête de la base de données n'a pas encore été faite, une sorte de récupération paresseuse), une requête directe à la base de données lorsque nous accédons directement à l'objet requis via un objet proxy. méthode get(); utilisé alors, vous n'êtes pas sûr à 100 pour cent si l'objet demandé se trouve dans la base de données. Dans le cas de l'accès à un objet inexistant, la méthode get(); renverra null. Si l'objet est trouvé, la méthode get() ; renverra l'objet lui-même et la requête dans la base de données sera effectuée immédiatement. 10) Que récupère Lazy dans Hibernate ? Le type d'extraction différée dans Hibernate est associé aux entités feuille (enfants) et définit une politique d'extraction partagée en cas de demande d'extraction d'une entité parent. Un exemple simple : il existe une entité House. Il stocke des informations sur son numéro, sa rue, le nombre d'appartements et des informations sur les familles qui vivent dans les appartements ; ces familles forment une entité enfant par rapport à l'entité Maison. Lorsque nous demandons des informations sur une maison, il peut s'avérer totalement inutile pour nous de connaître les informations sur les familles qui y vivent. Ici, la récupération paresseuse vient à notre aide, ce qui nous permet de configurer l'entité Maison de manière à ce que les informations sur les familles soient fournies uniquement. sur demande, cela obscurcit considérablement la demande et accélère l'application. ©dev-bay La plupart des tables de la base de données ont des index qui affichent la position d'un élément de données les uns par rapport aux autres ; ces index sont représentés dans la table sous forme de colonne distincte. Avec le mappage objet-relationnel, les valeurs d'une colonne d'index sont mappées à un index dans un tableau, un index dans une liste ou une clé dans une carte. Si vous avez besoin d'obtenir une collection d'objets qui ne contiennent pas de données d'index, vous pouvez alors utiliser des collections de type Bag ou Set (les collections contiennent des données sous forme non triée, mais peuvent être triées en fonction de la demande). 9) Quelle est la différence dans le fonctionnement des méthodes load(); et obtenir();? méthode load() ; généralement utilisé lorsque vous n'êtes pas sûr que l'objet demandé soit déjà dans la base de données. Si l'objet n'est pas trouvé, alors la méthode lève une exception. Si l'objet est trouvé, la méthode renvoie un objet proxy, qui est un lien vers l'objet situé dans la base de données (la requête de la base de données n'a pas encore été faite, une sorte de récupération paresseuse), une requête directe à la base de données lorsque nous accédons directement à l'objet requis via un objet proxy. méthode get(); utilisé alors, vous n'êtes pas sûr à 100 pour cent si l'objet demandé se trouve dans la base de données. Dans le cas de l'accès à un objet inexistant, la méthode get(); renverra null. Si l'objet est trouvé, la méthode get() ; renverra l'objet lui-même et la requête dans la base de données sera effectuée immédiatement. 10) Que récupère Lazy dans Hibernate ? Le type d'extraction différée dans Hibernate est associé aux entités feuille (enfants) et définit une politique d'extraction partagée en cas de demande d'extraction d'une entité parent. Un exemple simple : il existe une entité House. Il stocke des informations sur son numéro, sa rue, le nombre d'appartements et des informations sur les familles qui vivent dans les appartements ; ces familles forment une entité enfant par rapport à l'entité Maison. Lorsque nous demandons des informations sur une maison, il peut s'avérer totalement inutile pour nous de connaître les informations sur les familles qui y vivent. Ici, la récupération paresseuse vient à notre aide, ce qui nous permet de configurer l'entité Maison de manière à ce que les informations sur les familles soient fournies uniquement. sur demande, cela obscurcit considérablement la demande et accélère l'application. ©dev-bay requête directe à la base de données lorsque nous accédons directement à l’objet requis via un objet proxy. méthode get(); utilisé alors, vous n'êtes pas sûr à 100 pour cent si l'objet demandé se trouve dans la base de données. Dans le cas de l'accès à un objet inexistant, la méthode get(); renverra null. Si l'objet est trouvé, la méthode get() ; renverra l'objet lui-même et la requête dans la base de données sera effectuée immédiatement. 10) Que récupère Lazy dans Hibernate ? Le type d'extraction différée dans Hibernate est associé aux entités feuille (enfants) et définit une politique d'extraction partagée en cas de demande d'extraction d'une entité parent. Un exemple simple : il existe une entité House. Il stocke des informations sur son numéro, sa rue, le nombre d'appartements et des informations sur les familles qui vivent dans les appartements ; ces familles forment une entité enfant par rapport à l'entité Maison. Lorsque nous demandons des informations sur une maison, il peut s'avérer totalement inutile pour nous de connaître les informations sur les familles qui y vivent. Ici, la récupération paresseuse vient à notre aide, ce qui nous permet de configurer l'entité Maison de manière à ce que les informations sur les familles soient fournies uniquement. sur demande, cela obscurcit considérablement la demande et accélère l'application. ©dev-bay requête directe à la base de données lorsque nous accédons directement à l’objet requis via un objet proxy. méthode get(); utilisé alors, vous n'êtes pas sûr à 100 pour cent si l'objet demandé se trouve dans la base de données. Dans le cas de l'accès à un objet inexistant, la méthode get(); renverra null. Si l'objet est trouvé, la méthode get() ; renverra l'objet lui-même et la requête dans la base de données sera effectuée immédiatement. 10) Que récupère Lazy dans Hibernate ? Le type d'extraction différée dans Hibernate est associé aux entités feuille (enfants) et définit une politique d'extraction partagée en cas de demande d'extraction d'une entité parent. Un exemple simple : il existe une entité House. Il stocke des informations sur son numéro, sa rue, le nombre d'appartements et des informations sur les familles qui vivent dans les appartements ; ces familles forment une entité enfant par rapport à l'entité Maison. Lorsque nous demandons des informations sur une maison, il peut s'avérer totalement inutile pour nous de connaître les informations sur les familles qui y vivent. Ici, la récupération paresseuse vient à notre aide, ce qui nous permet de configurer l'entité Maison de manière à ce que les informations sur les familles soient fournies uniquement. sur demande, cela obscurcit considérablement la demande et accélère l'application. ©dev-bay
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION