1. Erklären Sie die Rolle des Namespace in MyBatis.
In großen Projekten kann es eine große Anzahl von SQL-Anweisungen geben. Derzeit ist es nicht einfach, jeder SQL-Anweisung eine eindeutige Identifikation (ID) zu geben. Um dieses Problem zu lösen, können Sie in MyBatis für jede Zuordnungsdatei einen eindeutigen Namespace erstellen, sodass jede in dieser Zuordnungsdatei definierte SQL-Anweisung zu einer in diesem Namespace definierten ID wird.
Solange wir sicherstellen können, dass diese ID in jedem Namespace eindeutig ist, treten keine Konflikte mehr auf, auch wenn die Anweisungs-IDs in verschiedenen Zuordnungsdateien gleich sind.
(Empfohlenes Tutorial: Java Quick Start)
2. Was bedeutet dynamisches SQL in MyBatis?
Für einige komplexe Abfragen können wir mehrere Abfragebedingungen angeben, aber diese Bedingungen können vorhanden sein oder auch nicht. Wenn wir das Persistenzschicht-Framework nicht verwenden, müssen wir möglicherweise die SQL zusammenstellen Anweisungen selbst, aber MyBatis bietet dynamische SQL-Funktionalität, um dieses Problem zu lösen.
Zu den Elementen, die zur Implementierung von dynamischem SQL in MyBatis verwendet werden, gehören hauptsächlich:
- if - select / when / else - trim - where - set - foreach
Anwendungsbeispiele:
<select id="foo" parameterType="Blog" resultType="Blog"> select * from t_blog where 1 = 1 <if test="title != null"> and title = #{title} </if> <if test="content != null"> and content = #{content} </if> <if test="owner != null"> and owner = #{owner} </if> </select>
3. Was sind die Mängel der JDBC-Programmierung? .
MyBatis: Konfigurieren Sie den Datenlinkpool in SqlMapConfig.xml und verwenden Sie den Verbindungspool zum Verwalten von Datenbanklinks. (2) JDBC: SQL-Anweisungen werden in den Code geschrieben, was die Wartung des Codes erschwert. Die tatsächliche Anwendung von SQL kann sich stark ändern, und SQL-Änderungen erfordern Änderungen am Java-Code. MyBatis: Konfigurieren Sie die SQL-Anweisung in der Datei XXXXmapper.xml und trennen Sie sie vom Java-Code. (3) JDBC: Es ist mühsam, Parameter an die SQL-Anweisung zu übergeben, da die Where-Bedingung der SQL-Anweisung nicht unbedingt sicher ist, sie kann mehr oder weniger sein und die Platzhalter müssen der entsprechen Parameter eins zu eins. MyBatis: Mybatis ordnet Java-Objekte automatisch SQL-Anweisungen zu. (4) JDBC: Das Parsen der Ergebnismenge ist mühsam. SQL-Änderungen führen zu Änderungen im Parsing-Code und müssen vor dem Parsen durchlaufen werden Pojo-Objekte. MyBatis: Mybatis ordnet SQL-Ausführungsergebnisse automatisch Java-Objekten zu.4. Was sind die Unterschiede zwischen MyBatis und Hibernate?
(1) Mybatis unterscheidet sich von Hibernate. Es handelt sich nicht vollständig um ein ORM-Framework, da MyBatis von Programmierern verlangt, SQL-Anweisungen selbst zu schreiben. Mybatis kann die SQL-Anweisungen jedoch flexibel für die Ausführung über XML konfigurieren Anmerkungen und ordnen Sie Java-Objekte und SQL-Anweisungen zu, um das endgültig ausgeführte SQL zu generieren, und ordnen Sie schließlich die Ergebnisse der SQL-Ausführung zu, um Java-Objekte zu generieren.
(2) Mybatis hat eine niedrige Lernschwelle und ist leicht zu erlernen. Es kann die SQL-Ausführungsleistung direkt steuern und ist sehr gut für die Softwareentwicklung geeignet stellen hohe Anforderungen an relationale Datenmodelle wie Internetsoftware, Unternehmensbetriebssoftware usw., da sich die Nachfrage nach dieser Art von Software häufig ändert. Sobald sich die Nachfrage ändert, müssen die Ergebnisse schnell ausgegeben werden. Die Voraussetzung für Flexibilität ist jedoch, dass Mybatis nicht datenbankunabhängig sein kann. Wenn Sie Software implementieren müssen, die mehrere Datenbanken unterstützt, müssen Sie mehrere Sätze von SQL-Zuordnungsdateien anpassen, was eine hohe Arbeitsbelastung darstellt. (3) Hibernate verfügt über starke Objekt-/Relational-Mapping-Funktionen und eine gute Datenbankunabhängigkeit. Wenn Sie Software mit hohen Anforderungen an relationale Modelle (z. B. kundenspezifische Software mit festen Anforderungen) verwenden, können Sie sie entwickeln Sparen Sie viel Code und verbessern Sie die Effizienz. Der Nachteil von Hibernate besteht jedoch darin, dass die Schwelle zum Lernen hoch und die Schwelle zur Beherrschung noch höher ist. Darüber hinaus ist es erforderlich, die O/R-Zuordnung zu entwerfen, die Leistung und das Objektmodell abzuwägen und Hibernate gut zu verwenden starke Erfahrung und Fähigkeit.Kurz gesagt: Solange die Anforderungen des Benutzers in einer Umgebung mit begrenzten Ressourcen erfüllt werden können, ist die Softwarearchitektur, die gewartet und skaliert werden kann, eine gute Architektur, sodass das Framework nur das Beste ist.
5. Sprechen Sie kurz über den First-Level-Cache und den Second-Level-Cache von MyBatis?Mybatis fragt zunächst die Ergebnismenge im Cache ab. Wenn keine Ergebnismenge vorhanden ist, fragt es die Datenbank ab. Wenn vorhanden, ruft es die Ergebnismenge aus dem Cache ab und gibt sie zurück Datenbank. Der interne Speichercache von Mybatis verwendet eine HashMap und der Schlüssel ist die Anweisung hashCode+sqlId+Sql. value ist das Java-Objekt, das durch Mapping aus der Abfrage generiert wird. Der Cache der zweiten Ebene von Mybatis ist der Abfrage-Cache. Sein Bereich ist ein Mapper-Namespace, d. h. durch Abfragen von SQL im selben Namespace können Daten aus dem Cache abgerufen werden. Der Cache der zweiten Ebene kann SqlSession umfassen.
Empfohlene verwandte Video-Tutorials:
Java-Video-TutorialDas obige ist der detaillierte Inhalt vonInterviewfragen zur Java-Persistenzschicht (2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!