JavaRush /Java-Blog /Random-DE /Fragen zum Hibernate-Interview
Dr-JohnZoidberg
Level 41
Киев

Fragen zum Hibernate-Interview

Veröffentlicht in der Gruppe Random-DE
Bei diesem Artikel handelt es sich um eine Übersetzung und Verbesserung ausländischer Artikel (eine Liste der Ressourcen finden Sie am Ende des Artikels). Die Antworten auf einige Fragen werden erweitert und es werden Links zu Ressourcen Dritter bereitgestellt, die Antworten enthalten, die während des Lesevorgangs auftreten können. 1) Was ist Ruhezustand? Es handelt sich um ein Framework für die objektrelationale Zuordnung von Entitäten in traditionelle relationale Datenbanken. Die Hauptmerkmale des Frameworks: 1) Automatische Generierung und Aktualisierung von Tabellen in Datenbanken; 2) Da die Hauptabfragen an die Datenbank (Speichern, Aktualisieren, Löschen und Suchen) als Methoden des Frameworks dargestellt werden, wird der Code, den der Entwickler schreibt, erheblich reduziert; 3) Bietet die Verwendung einer SQL-ähnlichen Sprache (HQL – Hibernate Query Language). HQL-Abfragen können zusammen mit Datenobjekten geschrieben werden (POJO-Klassen, die für die Arbeit mit einer Datenbank vorbereitet sind). 2) So schalten Sie den Ruhezustand einhilft beim Programmieren? Hibernate implementiert eine Reihe von Funktionen, die die Arbeit des Entwicklers erheblich vereinfachen. — Eine dieser Funktionen besteht darin, dass der Entwickler im Ruhezustand das Schreiben der meisten SQL-Abfragen vermeiden kann (sie sind bereits implementiert, Sie müssen nur die vom Framework bereitgestellten Methoden verwenden). — Unter der Haube verfügt Hibernate über eine Reihe nützlicher Tools, die die Anwendung erheblich beschleunigen. Die bemerkenswertesten davon sind das zweistufige Caching und die Feinabstimmung von Lazy- und Fetch-Abhebungen. – Erstellt Tabellen in der Datenbank selbst. 3) Methoden zum Konfigurieren der Arbeit mit Hibernate. Es gibt vier Möglichkeiten, die Arbeit mit Hibernate zu konfigurieren: – mithilfe von Anmerkungen; - hibernate.cfg.xml; - hibernate.properties; - persistence.xml. Die gebräuchlichste Konfigurationsmethode: über Anmerkungen und die Datei persistence.xml, wie für die Dateien hibernate.properties und hibernate.cfg.xml, dann ist hibernate.cfg.xml wichtiger (wenn die Anwendung beide Dateien hat, dann die Einstellungen von werden die Datei hibernate.cfg akzeptiert. xml). Die Konfiguration mit Anmerkungen ist zwar praktisch, aber nicht immer möglich. Wenn Sie beispielsweise unterschiedliche Entitätskonfigurationen für unterschiedliche Datenbanken oder für unterschiedliche Situationen wünschen, sollten Sie XML-Konfigurationsdateien verwenden. 4) Welche wichtigen Schnittstellen verwendet Hibernate? Es gibt fünf Schlüsselschnittstellen, die in jeder Hibernate-bezogenen Anwendung verwendet werden: – Sitzungsschnittstelle; - SessionFactory-Schnittstelle; — Konfigurationsschnittstelle; — Transaktionsschnittstelle; – Abfrage- und Kriterienschnittstellen. 5) Welche Rolle spielt die Sitzungsschnittstelle in Hibernate? Die Sitzung ist die Hauptschnittstelle, die für die Kommunikation mit der Datenbank verantwortlich ist. Es hilft auch beim Erstellen von Anforderungsobjekten, um persistente Objekte zu erhalten. (persistentes Objekt – ein Objekt, das sich bereits in der Datenbank befindet; Anforderungsobjekt – ein Objekt, das erhalten wird, wenn wir das Ergebnis einer Abfrage in der Datenbank erhalten; mit diesem Objekt arbeitet die Anwendung). Das Session-Objekt kann von SessionFactory abgerufen werden: Session session = sessionFactory.openSession(); Die Rolle der Sitzungsschnittstelle: ist ein Wrapper für die JDBC-Verbindung zur Datenbank; (https://ru.wikipedia.org/wiki/Java_Database_Connectiv..) – ist eine Fabrik für Transaktionen (laut offizieller Dokumentation). Transaktion – ermöglicht der Anwendung, Arbeitseinheiten zu definieren, was im Wesentlichen bedeutet, dass die Transaktion definiert die Grenzen der mit der Datenbank verbundenen Operationen). – ist der Verwalter des obligatorischen Caches der ersten Ebene. 6) Welche Rolle spielt die SessionFactory-Schnittstelle in Hibernate? Aus dem SessionFactory-Objekt erhalten wir Objekte vom Typ Session. Für die gesamte Anwendung gibt es nur eine SessionFactory, die beim Start der Anwendung initialisiert wird. SessionFactory speichert Metadaten und SQL-Abfragen zwischen, die von der Anwendung während des Betriebs häufig verwendet werden. Außerdem werden Informationen zwischengespeichert, die in einer der Transaktionen empfangen wurden und in anderen Transaktionen verwendet werden können. Das SessionFactory-Objekt kann mit dem folgenden Aufruf abgerufen werden: SessionFactory sessionFactory = Configuration.buildSessionFactory(); 7) Welche Arten von Sammlungen werden in Hibernate bereitgestellt? Tasche, Satz, Liste, Karte, Array. 8) Was ist eine Taschenkollektion und warum wird sie verwendet? In seiner Implementierung ist der Sammlungstyp „Bag“ dem Typ „Set“ sehr ähnlich. Der Unterschied besteht darin, dass „Bag“ doppelte Werte speichern kann. Bag speichert eine nicht indizierte Liste von Elementen. Die meisten Tabellen in der Datenbank verfügen über Indizes, die die Position eines Datenelements relativ zueinander anzeigen; diese Indizes werden in der Tabelle als separate Spalte dargestellt. Bei der objektrelationalen Zuordnung werden die Werte einer Indexspalte einem Index in einem Array, einem Index in einer Liste oder einem Schlüssel in einer Map zugeordnet. Wenn Sie eine Sammlung von Objekten benötigen, die keine Indexdaten enthalten, können Sie Sammlungen vom Typ „Bag“ oder „Set“ verwenden (Sammlungen enthalten Daten in unsortierter Form, können aber je nach Anforderung sortiert werden). 9) Was ist der Unterschied in der Funktionsweise der Load();-Methoden? und bekomme();? Methode „load()“; Wird normalerweise verwendet, wenn Sie nicht sicher sind, ob sich das angeforderte Objekt bereits in der Datenbank befindet. Wenn das Objekt nicht gefunden wird, löst die Methode eine Ausnahme aus. Wenn das Objekt gefunden wird, gibt die Methode ein Proxy-Objekt zurück, das einen Link zu dem Objekt darstellt, das sich in der Datenbank befindet (die Datenbankanforderung wurde noch nicht gestellt, eine Art (Lazy Retrieval) ist eine direkte Anfrage an die Datenbank, wenn wir über ein Proxy-Objekt direkt auf das erforderliche Objekt zugreifen. get()-Methode; Wenn man dann verwendet, ist man sich nicht 100-prozentig sicher, ob das angeforderte Objekt in der Datenbank vorhanden ist. Im Falle des Zugriffs auf ein nicht vorhandenes Objekt wird die Methode get(); verwendet wird null zurückgeben. Wenn das Objekt gefunden wird, führt die get()-Methode; gibt das Objekt selbst zurück und die Datenbankabfrage wird sofort durchgeführt. 10) Was ist Lazy Fetching im Ruhezustand? Der Lazy-Checkout-Typ in Hibernate ist Blattentitäten (untergeordneten Entitäten) zugeordnet und definiert eine gemeinsame Checkout-Richtlinie, wenn eine Anfrage zum Auschecken einer übergeordneten Entität vorliegt. Ein einfaches Beispiel: Es gibt eine Entität House. Es speichert Informationen über die Hausnummer, Straße, Anzahl der Wohnungen und Informationen über die Familien, die in den Wohnungen leben; diese Familien bilden eine untergeordnete Entität im Verhältnis zur Hausentität. Wenn wir Informationen über ein Haus anfordern, ist es für uns möglicherweise völlig unnötig, Informationen über die darin lebenden Familien zu kennen. Hier kommt uns Lazy Fetching zu Hilfe, das es uns ermöglicht, die Entität „Haus“ so zu konfigurieren, dass nur Informationen über Familien bereitgestellt werden Dies schwächt die Anfrage erheblich und beschleunigt die Anwendung. ©dev-bay Die meisten Tabellen in der Datenbank verfügen über Indizes, die die Position eines Datenelements relativ zueinander anzeigen; diese Indizes werden in der Tabelle als separate Spalte dargestellt. Bei der objektrelationalen Zuordnung werden die Werte einer Indexspalte einem Index in einem Array, einem Index in einer Liste oder einem Schlüssel in einer Map zugeordnet. Wenn Sie eine Sammlung von Objekten benötigen, die keine Indexdaten enthalten, können Sie Sammlungen vom Typ „Bag“ oder „Set“ verwenden (Sammlungen enthalten Daten in unsortierter Form, können aber je nach Anforderung sortiert werden). 9) Was ist der Unterschied in der Funktionsweise der Load();-Methoden? und bekomme();? Methode „load()“; Wird normalerweise verwendet, wenn Sie nicht sicher sind, ob sich das angeforderte Objekt bereits in der Datenbank befindet. Wenn das Objekt nicht gefunden wird, löst die Methode eine Ausnahme aus. Wenn das Objekt gefunden wird, gibt die Methode ein Proxy-Objekt zurück, das einen Link zu dem Objekt darstellt, das sich in der Datenbank befindet (die Datenbankanforderung wurde noch nicht gestellt, eine Art (Lazy Retrieval) ist eine direkte Anfrage an die Datenbank, wenn wir über ein Proxy-Objekt direkt auf das erforderliche Objekt zugreifen. get()-Methode; Wenn man dann verwendet, ist man sich nicht 100-prozentig sicher, ob das angeforderte Objekt in der Datenbank vorhanden ist. Im Falle des Zugriffs auf ein nicht vorhandenes Objekt wird die Methode get(); verwendet wird null zurückgeben. Wenn das Objekt gefunden wird, führt die get()-Methode; gibt das Objekt selbst zurück und die Datenbankabfrage wird sofort durchgeführt. 10) Was ist Lazy Fetching im Ruhezustand? Der Lazy-Checkout-Typ in Hibernate ist Blattentitäten (untergeordneten Entitäten) zugeordnet und definiert eine gemeinsame Checkout-Richtlinie, wenn eine Anfrage zum Auschecken einer übergeordneten Entität vorliegt. Ein einfaches Beispiel: Es gibt eine Entität „Haus“. Es speichert Informationen über die Hausnummer, Straße, Anzahl der Wohnungen und Informationen über die Familien, die in den Wohnungen leben; diese Familien bilden eine untergeordnete Entität im Verhältnis zur Hausentität. Wenn wir Informationen über ein Haus anfordern, ist es für uns möglicherweise völlig unnötig, Informationen über die darin lebenden Familien zu kennen. Hier kommt uns Lazy Fetching zu Hilfe, das es uns ermöglicht, die Entität „Haus“ so zu konfigurieren, dass nur Informationen über Familien bereitgestellt werden Dies schwächt die Anfrage erheblich und beschleunigt die Anwendung. ©dev-bay Die meisten Tabellen in der Datenbank verfügen über Indizes, die die Position eines Datenelements relativ zueinander anzeigen; diese Indizes werden in der Tabelle als separate Spalte dargestellt. Bei der objektrelationalen Zuordnung werden die Werte einer Indexspalte einem Index in einem Array, einem Index in einer Liste oder einem Schlüssel in einer Map zugeordnet. Wenn Sie eine Sammlung von Objekten benötigen, die keine Indexdaten enthalten, können Sie Sammlungen vom Typ „Bag“ oder „Set“ verwenden (Sammlungen enthalten Daten in unsortierter Form, können aber je nach Anforderung sortiert werden). 9) Was ist der Unterschied in der Funktionsweise der Load();-Methoden? und bekomme();? Methode „load()“; Wird normalerweise verwendet, wenn Sie nicht sicher sind, ob sich das angeforderte Objekt bereits in der Datenbank befindet. Wenn das Objekt nicht gefunden wird, löst die Methode eine Ausnahme aus. Wenn das Objekt gefunden wird, gibt die Methode ein Proxy-Objekt zurück, das einen Link zu dem Objekt darstellt, das sich in der Datenbank befindet (die Datenbankanforderung wurde noch nicht gestellt, eine Art (Lazy Retrieval) ist eine direkte Anfrage an die Datenbank, wenn wir über ein Proxy-Objekt direkt auf das erforderliche Objekt zugreifen. get()-Methode; Wenn man dann verwendet, ist man sich nicht 100-prozentig sicher, ob das angeforderte Objekt in der Datenbank vorhanden ist. Im Falle des Zugriffs auf ein nicht vorhandenes Objekt wird die Methode get(); verwendet wird null zurückgeben. Wenn das Objekt gefunden wird, führt die get()-Methode; gibt das Objekt selbst zurück und die Datenbankabfrage wird sofort durchgeführt. 10) Was ist Lazy Fetching im Ruhezustand? Der Lazy-Checkout-Typ in Hibernate ist Blattentitäten (untergeordneten Entitäten) zugeordnet und definiert eine gemeinsame Checkout-Richtlinie, wenn eine Anfrage zum Auschecken einer übergeordneten Entität vorliegt. Ein einfaches Beispiel: Es gibt eine Entität House. Es speichert Informationen über die Hausnummer, Straße, Anzahl der Wohnungen und Informationen über die Familien, die in den Wohnungen leben; diese Familien bilden eine untergeordnete Entität im Verhältnis zur Hausentität. Wenn wir Informationen über ein Haus anfordern, ist es für uns möglicherweise völlig unnötig, Informationen über die darin lebenden Familien zu kennen. Hier kommt uns Lazy Fetching zu Hilfe, das es uns ermöglicht, die Entität „Haus“ so zu konfigurieren, dass nur Informationen über Familien bereitgestellt werden Dies schwächt die Anfrage erheblich und beschleunigt die Anwendung. ©dev-bay direkte Abfrage an die Datenbank, wenn wir über ein Proxy-Objekt direkt auf das erforderliche Objekt zugreifen. get()-Methode; Wenn man dann verwendet, ist man sich nicht 100-prozentig sicher, ob das angeforderte Objekt in der Datenbank vorhanden ist. Im Falle des Zugriffs auf ein nicht vorhandenes Objekt wird die Methode get(); verwendet wird null zurückgeben. Wenn das Objekt gefunden wird, führt die get()-Methode; gibt das Objekt selbst zurück und die Datenbankabfrage wird sofort durchgeführt. 10) Was ist Lazy Fetching im Ruhezustand? Der Lazy-Checkout-Typ in Hibernate ist Blattentitäten (untergeordneten Entitäten) zugeordnet und definiert eine gemeinsame Checkout-Richtlinie, wenn eine Anfrage zum Auschecken einer übergeordneten Entität vorliegt. Ein einfaches Beispiel: Es gibt eine Entität „Haus“. Es speichert Informationen über die Hausnummer, Straße, Anzahl der Wohnungen und Informationen über die Familien, die in den Wohnungen leben; diese Familien bilden eine untergeordnete Entität im Verhältnis zur Hausentität. Wenn wir Informationen über ein Haus anfordern, ist es für uns möglicherweise völlig unnötig, Informationen über die darin lebenden Familien zu kennen. Hier kommt uns Lazy Fetching zu Hilfe, das es uns ermöglicht, die Entität „Haus“ so zu konfigurieren, dass nur Informationen über Familien bereitgestellt werden Dies schwächt die Anfrage erheblich und beschleunigt die Anwendung. ©dev-bay direkte Abfrage an die Datenbank, wenn wir über ein Proxy-Objekt direkt auf das erforderliche Objekt zugreifen. get()-Methode; Wenn man dann verwendet, ist man sich nicht 100-prozentig sicher, ob das angeforderte Objekt in der Datenbank vorhanden ist. Im Falle des Zugriffs auf ein nicht vorhandenes Objekt wird die Methode get(); verwendet wird null zurückgeben. Wenn das Objekt gefunden wird, führt die get()-Methode; gibt das Objekt selbst zurück und die Datenbankabfrage wird sofort durchgeführt. 10) Was ist Lazy Fetching im Ruhezustand? Der Lazy-Checkout-Typ in Hibernate ist Blattentitäten (untergeordneten Entitäten) zugeordnet und definiert eine gemeinsame Checkout-Richtlinie, wenn eine Anfrage zum Auschecken einer übergeordneten Entität vorliegt. Ein einfaches Beispiel: Es gibt eine Entität „Haus“. Es speichert Informationen über die Hausnummer, Straße, Anzahl der Wohnungen und Informationen über die Familien, die in den Wohnungen leben; diese Familien bilden eine untergeordnete Entität im Verhältnis zur Hausentität. Wenn wir Informationen über ein Haus anfordern, ist es für uns möglicherweise völlig unnötig, Informationen über die darin lebenden Familien zu kennen. Hier kommt uns Lazy Fetching zu Hilfe, das es uns ermöglicht, die Entität „Haus“ so zu konfigurieren, dass nur Informationen über Familien bereitgestellt werden Dies schwächt die Anfrage erheblich und beschleunigt die Anwendung. ©dev-bay
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION