In diesem Artikel wird das klassische Interview mit geschriebenen Testfragen und deren Referenzantworten angezeigt. Teilen Sie es für Ihre Referenz wie folgt weiter:
1. Wie funktioniert Hibernate und warum sollte er verwendet werden?
Prinzip:
1. Lesen und analysieren Sie Konfigurationsdateien
2. Lesen und analysieren Sie die Zuordnungsinformationen und erstellen Sie eine Sitzungsfaktorik
3.. Öffnen Sie die Sitzung
4. Erstellen Sie einen Transaktionstransporation
5. Persistenzoperation
6. Transaktionen einreichen
7. Schließung
8. Schließen Sie die Faktor
Warum verwenden:
①. Der Code für JDBC -Zugriff auf Datenbanken wurde eingekapselt und vereinfacht den umständlichen sich wiederholenden Code in der Datenzugriffsschicht erheblich.
②. Hibernate ist ein Mainstream -Persistenz -Framework, das auf JDBC basiert und eine hervorragende ORM -Implementierung. Es vereinfacht die Kodierungsarbeiten der Dao -Schicht in hohem Maße
③. Hibernate verwendet den Java -Reflexionsmechanismus und nicht die Bytecode -Verbesserungsprogramme, um Transparenz zu erreichen.
④. Hibernate funktioniert sehr gut, da es sich um ein leichtes Rahmen handelt. Die Flexibilität der Kartierung ist ausgezeichnet. Es unterstützt verschiedene relationale Datenbanken von eins bis eins bis zu vielen komplexen Beziehungen.
2. Wie verzögert das Laden von Winterschlafen?
①. Hibernate2 Verzögerungslade -Implementierung: a) Entität Objekt b) Sammlung (Sammlung)
②. Hibernate3 bietet die verzögerte Ladefunktion von Attributen. Wenn Hibernate -Querys -Daten vorliegen, existieren die Daten nicht und Speicher. Wenn das Programm wirklich mit den Daten arbeitet, existiert das Objekt und Speicher, was die verzögerte Belastung realisiert. Es speichert den Speicheraufwand des Servers und verbessert somit die Leistung des Servers.
3.. Wie kann man die Beziehung zwischen Klassen im Winterschlaf umsetzen? (wie eins zu viele, viele zu viele Beziehunge)
Die Beziehung zwischen Klassen spiegelt sich hauptsächlich in der Beziehung zwischen Tabellen wider. Sie arbeiten an Objekten in der Stadt. Unser Programm birgt alle Tabellen und Klassen zusammen und sie werden in der Konfigurationsdatei viele zu einem, eins zu vielen, viele zu viele und viele zu vielen zu vielen zu vielen zu tun.
4. Lassen Sie uns über den Cache -Mechanismus von Hibernate sprechen
①. Der interne Cache wird auch als Cache in Hibernate als Erststufe bezeichnet, das zum Cache auf Anwendungsebene gehört
②. Stufe 2 Cache:
a) Anwendung und Cache
b) Verteilte Cache-Bedingungen: Die Daten werden nicht durch Dritte geändert, die Datengröße liegt in einem akzeptablen Bereich, die Datenaktualisierungsfrequenz ist gering, dieselben Daten werden häufig vom System und nicht kritische Daten verwendet
c) Implementierung des Cache von Drittanbietern
5. Hibernate -Query -Methode
SQL, Kriterien, Objektvergleich
HQL:
1. Attributabfrage
2. Parameterabfrage, als Parameterabfrage bezeichnet
3. Verwandte Abfrage
4. Pagination -Abfrage
5. Statistische Funktionen
6. Wie optimieren Sie den Winterschlaf?
①. Verwenden Sie eine bidirektionale Eins-zu-Viele-Vereinigung, nicht eins-zu-Viele-zu-Many-Assoziation. Verwenden Sie flexibel Eins-zu-Viele-Eins-zu-Man-Verein ③. Verwenden Sie nicht eins zu eins, verwenden Sie stattdessen viele zu eins ④. Konfigurieren Sie den Objekt -Cache, verwenden Sie keinen Set -Cache ⑤. Verwenden Sie die Tasche für Eins-zu-Viele-Kollektionen und verwenden Sie das Set für viele zu viele Kollektionen.
⑥. Verwenden Sie explizite Polymorphismus in Vererbungsklassen⑦. Es sollte weniger Tischfelder geben und keine Angst vor vielen Tabellenverbänden haben. Es gibt einen sekundären Cache, der Sie unterstützt.
7. Streben Arbeitsmechanismus? Warum Streben verwenden?
Arbeitsmechanismus:
Struts 'Workflow:
Der Initialisierungs -ActionServlet wird geladen, wenn die Webanwendung gestartet wird. Das ActionServlet wird von geladen
Lesen Sie Konfigurationsinformationen aus der Datei Struts-config.xml und speichern Sie sie in verschiedenen Konfigurationsobjekten
Wenn das ActionServlet eine Client -Anfrage erhält, wird der folgende Vorgang ausgeführt.
-(1) ActionMapping -Instanz abrufen, die der Benutzeranforderung entspricht. Wenn es nicht vorhanden ist, gibt es den Anforderungspfad ungültige Informationen zurück.
-(2) Wenn die ActionForm -Instanz nicht vorhanden ist, erstellen Sie ein ActionForm -Objekt und speichern Sie die vom Client an das ActionForm -Objekt übermittelten Formulardaten.
-(3) Entscheiden Sie, ob die Formularüberprüfung basierend auf den Konfigurationsinformationen erforderlich ist. Wenn Überprüfung erforderlich ist, call actionForms Validate () -Methode aufrufen;
-(4) Wenn die Validate () -Methode der Actionform NULL zurückgibt oder ein Actuiberrors -Objekt zurückgibt, das keine ActionMessage enthält, bedeutet dies, dass die Form des Formulars erfolgreich ist.
-(5) Der ActionServlet entscheidet, welche Aktion die Anforderung basierend auf den in ActionMapping enthaltenen Zuordnungsinformationen weiterleiten. Wenn die entsprechende Aktionsinstanz nicht vorhanden ist, erstellen Sie zuerst diese Instanz und rufen Sie dann die Methode der execute () der Aktion auf.
-(6) Action Execute () -Methode gibt ein ActionForward -Objekt zurück, und das ActionServlet leitet die Client -Anforderung an die JSP -Komponente weiter, auf die das Objekt von Actionforward hingewiesen wurde.
-(7) Das Objekt von ActionForward zeigt auf die JSP -Komponente, um eine dynamische Webseite zu generieren und sie an den Client zurückzugeben.
Warum verwenden:
Die Entstehung von JSP-, Servlet- und Javabäen -Technologien bietet uns die Möglichkeit, leistungsstarke Unternehmensanwendungssysteme aufzubauen. Das mit diesen Technologien gebaute System ist jedoch sehr chaotisch. Darüber hinaus brauchen wir eine Regel und eine Regel, um diese Technologien zu organisieren. Dies ist der Rahmen, und Streben entstanden.
Anwendungen, die basierend auf Streben entwickelt wurden
8. Wie wird das Validierungsrahmen von Struts validiert?
Konfigurieren Sie spezifische Fehlereingabeaufforderungen in der Struts -Konfigurationsdatei und rufen Sie dann die Validate () -Methode in der Formbean.
9. Sprechen wir über Struts 'Designmuster
MVC -Modus: ActionServler wird geladen und initialisiert, wenn die Webanwendung startet. Wenn der Benutzer ein Formular einreicht, wird ein konfiguriertes ActionForm -Objekt erstellt und in den entsprechenden Daten des Formulars ausgefüllt. Der ActionServler entscheidet, ob die Formularüberprüfung basierend auf den Einstellungen erforderlich ist, die von der Datei Struts-config.xml konfiguriert sind. Bei Bedarf können Sie die Überprüfung von ActionForm () validieren () und wählen Sie, welche Aktion die Anfrage an senden. Wenn die Aktion nicht vorhanden ist, erstellt das ActionServlet zuerst dieses Objekt und ruft dann die Methode "Execute () der Aktion auf. Execute () erhält Daten aus dem ActionForm -Objekt, vervollständigt die Geschäftslogik und gibt ein ActionForward -Objekt zurück. Das ActionServlet leitet die Client -Anforderung an die von ActionForward -Objekt angegebene JSP -Komponente weiter. Das vom ActionForward -Objekt angegebene JSP generiert eine dynamische Webseite und gibt es dem Client zurück.
10. Frühlingsarbeitsmechanismus und warum?
①.Spring MVC Bitte senden Sie alle Anfragen an den DispatcherServlet, wodurch andere Module des Antragssystems für die tatsächliche Verarbeitung der Anfrage verantwortlich sind.
②.SispatcherServlet querys einen oder mehrere Handlermappings und findet den Controller, der die Anfrage bearbeitet.
③.DispatcherServlet Bitte senden Sie die Anfrage an den Zielcontroller
④. Nachdem der Controller die Geschäftslogikverarbeitung durchführt, wird ein Modell und eine Ansicht zurückgegeben.
⑤.Sispathcher querys einen oder mehrere ViewResolver -Ansichtsresolvers und findet das vom ModelAndView -Objekt angegebene Ansichtsobjekt ⑥. Das Ansichtsobjekt ist für die Rendern und Rückgabe an den Kunden verantwortlich.
Warum verwenden:
{AOP ermöglicht es Entwicklern, nicht-verhaltensbekannte Bedenken zu erstellen, die als Überschneidungsbedenken bezeichnet werden, und sie in den Anwendungscode einfügen. Nach der Verwendung von AOP können öffentliche Dienste (wie Protokolle, Persistenz, Transaktionen usw.) in Aspekte unterteilt und auf Domänenobjekte angewendet werden, ohne die Komplexität des Objektmodells von Domänenobjekten zu erhöhen.
IOC ermöglicht das Erstellen einer Anwendungsumgebung, in der Objekte konstruiert werden können, und dann ihre kollaborativen Objekte an diese Objekte weitergeben. Wie die Wortinversion anzeigt, ist IOC wie der umgekehrte JNDI. Ohne eine Reihe abstrakter Fabriken, Service -Locators, Singletons und gerade Konstruktionen zu verwenden, wird jedes Objekt mit seinen kollaborativen Objekten konstruiert. Daher wird der Mitarbeiter vom Container verwaltet.
Der Frühling ist ein IOC -Behälter, auch wenn es sich um ein AOP -Framework handelt. Das Beste am Frühling ist, dass es Ihnen hilft, Objekte zu ersetzen. Fügen Sie mit Spring einfach Abhängigkeiten (Collaboration -Objekte) mit javabäischen Eigenschaften und Konfigurationsdateien hinzu. Kollaborationsobjekte mit ähnlichen Schnittstellen können dann bei Bedarf leicht ersetzt werden. }
Das Spring-Framework ist eine hierarchische Architektur, die aus 7 gut definierten Modulen besteht. Federmodule sind auf Kernbehältern aufgebaut, die definieren, wie Bohnen erstellt, konfiguriert und verwaltet werden.
Jedes Modul (oder die Komponente), aus der das Feder -Framework besteht, kann allein existieren oder in Verbindung mit einem oder mehreren anderen Modulen implementiert werden. Die Funktionen jedes Moduls sind wie folgt:
☆ Kernbehälter: Der Kernbehälter bietet die grundlegenden Funktionen des Spring -Frameworks. Die Hauptkomponente des Kernbehälters ist beanfaktorisch, was eine Implementierung des Fabrikmusters ist. BeanFactory verwendet den IOC -Modus (Inversion of Control), um die Konfigurations- und Abhängigkeitspezifikationen einer Anwendung vom tatsächlichen Anwendungscode zu trennen.
☆ Spring Context: Der Federkontext ist eine Konfigurationsdatei, die Kontextinformationen für das Spring Framework bereitstellt. Der Frühlingskontext umfasst Unternehmensdienste wie JNDI, EJB, E -Mail, Internationalisierung, Prüfsummenplanungsfunktionen.
☆ Feder AOP: Durch die Konfigurationsverwaltungsfunktion integriert das Feder-AOP-Modul direkt actionorientierte Programmierfunktionen in das Spring-Framework. Daher ist es einfach, jedes Objekt zu gestalten, das durch Spring Framework unterstützt wird. Das Spring AOP-Modul bietet Transaktionsverwaltungsdienste für Objekte in federbasierten Anwendungen. Durch die Verwendung von Spring AOP kann das deklarative Transaktionsmanagement in die Anwendung integriert werden, ohne sich auf EJB -Komponenten zu verlassen.
☆ Spring DAO: Die JDBC DAO -Abstraktionsschicht bietet eine aussagekräftige Ausnahmehierarchie, mit der die Ausnahmeregelung und Fehlermeldungen von verschiedenen Datenbankanbietern verwaltet werden können. Die Ausnahmehierarchie vereinfacht die Fehlerbehandlung und reduziert die Menge an Ausnahmecode, die geschrieben werden muss, erheblich (z. B. Öffnen und Schließen von Verbindungen). Die JDBC-orientierten Ausnahmen von Spring DAO folgen der gemeinsamen DAO-Ausnahmehierarchie.
☆ Spring ORM: Das Spring Framework fügt mehrere ORM -Frameworks ein und bietet somit ORM -Objektbeziehungsinstrumente, einschließlich JDO-, Hibernate- und Ibatis SQL -Karte. All dies folgt auf die gemeinsame Transaktion und die Dao -Ausnahmehierarchie von Spring.
☆ Spring Web Modul: Das Web-Kontext-Modul basiert auf dem Anwendungskontextmodul und bietet einen Kontext für webbasierte Anwendungen. Daher unterstützt das Spring -Framework die Integration mit Jakarta Strebens. Das Webmodul vereinfacht auch die Arbeit der Handhabung mehrteiliger Anforderungen und Bindungsanforderungsparameter an Domänenobjekte.
☆ Spring MVC Framework: Das MVC -Framework ist eine voll funktionsfähige MVC -Implementierung für das Erstellen von Webanwendungen. Über die Richtlinienschnittstelle wird das MVC -Framework hochkonfigurierbar, und MVC beherbergt eine große Anzahl von Sichttechnologien, einschließlich JSP, Geschwindigkeit, Fliesen, ITEXT und POI.
Die Funktionen des Spring Framework können auf jedem J2EE -Server verwendet werden, und die meisten von ihnen sind für nicht verwaltete Umgebungen geeignet. Der Kernpunkt des Frühlings ist: Unterstützung für wiederverwendbare Geschäfts- und Datenzugriffsobjekte, die nicht an bestimmte J2EE -Dienste gebunden sind. Es besteht kein Zweifel, dass solche Objekte zwischen verschiedenen J2EE -Umgebungen (Web oder EJB), eigenständigen Anwendungen und Testumgebungen wiederverwendet werden können.
IOC und AOP
Das grundlegende Konzept der Kontrolle von Inversionsmustern (auch als Abhängigkeitsintervention bezeichnet) besteht darin, keine Objekte zu erstellen, sondern zu beschreiben, wie sie erstellt werden. Es wird nicht direkt eine Verbindung zu Objekten und Diensten im Code hergestellt, sondern beschreibt, welche Komponente für welchen Dienst in der Konfigurationsdatei erforderlich ist. Container (IOC -Behälter im Spring -Framework) sind dafür verantwortlich, diese miteinander zu verbinden.
In einem typischen IOC -Szenario erstellt der Container alle Objekte und legt die erforderlichen Eigenschaften fest, um sie miteinander zu verbinden, und entscheiden, wann die Methode aufgerufen wird. Die folgende Tabelle listet ein Implementierungsmuster von IOC auf.
Der IOC -Container des Spring Framework wird mit Typ 2 und Typ 3 implementiert.
Aspektorientierte Programmierung
Aspektorientierte Programmierung, AOP, ist eine Programmierungstechnik, mit der Programmierer Verhaltensweisen modularisieren können, die die Bedenken oder Kreuzschnitte typischer Verantwortungslinien (z. B. Protokollierung und Transaktionsmanagement) überschreiten. Die Kernkonstruktion von AOP ist Aspekt, der jene Verhaltensweisen zusammenfasst, die mehrere Klassen in wiederverwendbare Module betreffen.
AOP und IOC sind komplementäre Technologien, die beide modulare Ansätze verwenden, um komplexe Probleme in der Entwicklung der Unternehmensanwendungen zu lösen. Bei typisch objektorientierter Entwicklung können Protokollierungsanweisungen in allen Methoden und Java-Klassen eingesetzt werden, um Protokollierungsfunktionen zu implementieren. Im AOP -Ansatz können Protokolldienste wiederum modularisiert und deklarativ auf Komponenten angewendet werden, die Protokolle erfordern. Der Vorteil ist natürlich, dass Java -Klassen weder die Existenz von Protokolldiensten kennen müssen noch einen relevanten Code in Betracht ziehen müssen. Daher ist der im Frühjahr AOP geschriebene Anwendungscode locker gekoppelt.
Die Funktionalität von AOP ist vollständig in den Kontext des Spring -Transaktionsmanagements, der Protokollierung und verschiedener anderer Merkmale integriert.
IOC -Behälter
Im Herzen von Spring's Design befindet sich das org.springframework.beans -Paket, das für Javabäekomponenten verwendet werden soll. Dieses Paket wird normalerweise nicht direkt vom Benutzer verwendet, sondern vom Server als den zugrunde liegenden Vermittler für die meisten anderen Funktionen. Die nächst fortgeschrittenste Abstraktion ist die Beanfactory -Schnittstelle, bei der das Werksentwurfsmuster implementiert wird, mit dem Objekte mit Namen erstellt und abgerufen werden können. Beanfactory kann auch Beziehungen zwischen Objekten verwalten.
Beanfactory unterstützt zwei Objektmodelle.
□ Das Singleton -Modell enthält gemeinsame Instanzen von Objekten mit bestimmten Namen, die bei der Abfrage abgerufen werden können. Singleton ist das Standard- und am häufigsten verwendete Objektmodell. Ideal für Staatlose Service -Objekte.
□ Prototypmodell stellt sicher, dass jedes Mal separate Objekte erstellt werden, wenn sie abgerufen werden. Prototypen eignen sich am besten, wenn jeder Benutzer sein eigenes Objekt benötigt.
Das Konzept der Bean -Fabrik ist die Grundlage des Frühlings als IOC -Container. IOC verlagert die Verantwortung für den Umgang mit Dingen von Anwendungscode in Frameworks. Wie ich im nächsten Beispiel demonstrieren werde, verwendet das Spring Framework javabäische Eigenschaften und Konfigurationsdaten, um die Abhängigkeiten anzugeben, die festgelegt werden müssen.
Beanfaktor -Schnittstelle
Da org.springframework.bean.factory.beanFactory eine einfache Schnittstelle ist, kann sie für verschiedene zugrunde liegende Speichermethoden implementiert werden. Die am häufigsten verwendete beanfaktorische Definition ist XMLBeanFactory, die Beans gemäß den Definitionen in XML -Dateien lädt, wie in Listing 1 gezeigt.
Listing 1. XMLBeanFactory
Beanfactory factory = new xmlbeanFactory (neuer FileInputSteam ("mybean.xml");In XML -Dateien definierte Bohnen werden negativ geladen, was bedeutet, dass die Bean selbst erst initialisiert wird, wenn sie benötigt wird. Um eine Bean von Beanfactory abzurufen, rufen Sie einfach die Methode getBean () an und geben Sie den Namen der zu abgerufenen Bean ein, wie in Listing 2 gezeigt.
Listing 2. getBean ()
Mybean mybean = (mybean) factory.getbean ("mybean");Die Definition jeder Bean kann entweder ein Pojo (definiert mit Klassennamen und Javaboan Initialisierungseigenschaft) oder einer Fabrikbekleidung sein. Die FactoryBean -Schnittstelle fügt Anwendungen, die mit dem Spring -Framework erstellt wurden, eine indirekte Ebene hinzu.
IOC -Beispiel
Der einfachste Weg, um die Kontrollinversion zu verstehen, besteht darin, ihre praktische Anwendung zu betrachten. Bei der Zusammenfassung von Teil 1 der dreiteiligen Frühlingsserie habe ich ein Beispiel verwendet, das zeigt, wie Abhängigkeiten einer Anwendung durch Spring-IOC-Container injiziert werden können (anstatt sie zu bauen).
Ich verwende den Anwendungsfall der Öffnung eines Online -Kreditkontos als Ausgangspunkt. Für diese Implementierung müssen der Benutzer mit den folgenden Diensten interagieren:
☆ Gutachter -Bewertungsservice, Anfrageinformationen des Benutzers.
☆ Remote Information Link Service, Kundeninformationen einfügen, Kundeninformationen mit Kreditkarte und Bankinformationen für die automatische Belastung verbinden (falls erforderlich).
☆ E -Mail -Service, Senden von Benutzern E -Mails zum Kreditkartenstatus.
Drei Schnittstellen
In diesem Beispiel gehe ich davon aus, dass die Dienste bereits existieren, und es ist im Idealfall, sie in locker gekoppelte Weise zusammen zu integrieren. Die folgende Liste zeigt die Schnittstellen des Anwendungsprogramms für die drei Dienste.
Listing 3. CreditRatingInterface
public interface creditRatingInterface {public boolean GetUsercredithistoryInformation (Icustomer Icustomer);}Die in Listing 3 angezeigte Kredite für die Kreditstufe enthält Informationen zu Kreditverlauf. Es erfordert ein Kundenobjekt, das Kundeninformationen enthält. Die Implementierung dieser Schnittstelle erfolgt von der CreditRating -Klasse.
Listing 4. CreditLinkinterface
Public Interface CreditLinkinterface {public String geturl (); public void seturl (String -URL); public void linkcreditbankAccount () löst Ausnahme aus;}Die Credit Link -Schnittstelle verbindet die Kreditverlaufsinformationen mit den Bankinformationen (falls erforderlich) und fügt die Kreditkarteninformationen des Benutzers ein. Die Kreditverbindungsschnittstelle ist ein Remote -Dienst, und ihre Abfrage wird über die Geturl () -Methode durchgeführt. Die URL wird vom Bean -Konfigurationsmechanismus des Spring Framework festgelegt, den ich später besprechen werde. Die Implementierung dieser Schnittstelle wird von der Kreditverbindungsklasse bereitgestellt.
Listing 5. E -MailInterface
öffentliche Schnittstelle E -MailInterface {public void sendemail (icustomer icustomer); public String getFromemail (); public void setfromemail (String from email); public String getPassword (); public void SetPassword (String -Passwort); public String GETMTMT ();Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.