Vorwort
In der Javaweb -Entwicklung sind die klassischsten die SSH -Framework -Kombination und die SSM -Framework -Kombination. Jetzt sind viele IT -Unternehmen bereit, SSM zu verwenden. Für H und M hier, Winterschlaf und Mybatis, lassen Sie mich heute kurz darüber sprechen.
Axt in der Tür spielen
Während des Unterrichts sage ich den Schülern oft, dass Sie jede Technik verstehen müssen:
Wissenserklärung
Hibernate und MyBatis sind beide sehr beliebt (Objektrelationskarte, um es unverblümt auszudrücken, eine Technologie, die Datenbanken abbildet) Persistenzschicht-Frameworks. Im Wesentlichen wird JDBC immer noch verkapselt, um unsere Verwendung zu erleichtern und unsere Entwicklung zu vereinfachen. Lassen Sie uns zuerst ein paar Probleme herausfinden:
Warum kann die Einführung einer Persistenzschicht dieses Problem lösen? Analyse: Ein Mechanismus kann in der Persistenzschicht eingeführt werden, die als Übersetzung verwendet werden kann. Für verschiedene Datenbanken unten werden HQL -Anweisungen und dynamische Abfrageanweisungen in verschiedene SQL -Anweisungen übersetzt. Dies löst das Problem, dass nach dem Ersetzen der Datenbank keine SQL -Anweisungen geändert werden müssen, und die Codemenge wird stark reduziert.
Es ist so gut, also wie wurde Hibernate und MyBatis die obige Lösung implementiert, dh, wie wurde ihre ORM implementiert?
Überwintern
In Hibernate ist dieser Mechanismus eine Konfigurationsdatei Hibernate.cfg.xml (platziert im SRC -Verzeichnis)
<Hibernate-Configuration> <Session-Factory> <Eigenschaft name = "connection.url"> jdbc: mysql: // localhost/hibernate </property> <property name = "connection.username"> root </property> <Eigenschaft name = "Connection.Pasword" name = "connection.driver_class"> com.mysql.jdbc.driver </Property> <Eigenschaft name = "Dialekt"> org.hibernate.dialect name = "format_sql"> true </property> <!-Verbindungspoolkonfiguration-> <Eigenschaft name = "hibernate.connection.provider_class"> org.hiNNATE.Service.jdbc.connections.internal.c3p0ConnectionProvider </Property> minimum numum numum numum numum numum numum numum numum in der Verbindung in der Verbindungspool. Hibernate standardmäßig 1-> <Eigenschaft name = "hibernate.c3p0.min_size"> 5 </Property> <!-Die maximale Anzahl von JDBC-Verbindungen im Verbindungspool. Hibernate standardmäßig auf 100-> <Eigenschaft name = "hibernate.c3p0.max_size"> 20 </Property> <!-Wann soll eine Leerlaufverbindung in Sekunden aus dem Verbindungspool entfernt werden. Der Standardwert ist 0, läuft niemals ab-> <Eigenschaft name = "hibernate.c3p0.timeout"> 300 </property> <! Verwendet, um die Leistung zu verbessern. Hibernate-Standardeinstellungen auf 0, Cache ist nicht verfügbar-> <Eigenschaft name = "hibernate.c3p0.max_statements"> 100 </property> <!-Leerlaufzeit (in Sekunden), bevor eine Verbindung automatisch überprüft wird. Hibernate Standards zu 0-> <Eigenschaft name = "hibernate.c3p0.idle_test_period"> 3000 </property> <!-unabhängig läuft. If you get the Session through getCurrentSession(), you need to set it as follows --> <property name="current_session_context_class">thread</property> <!-- Two ways to map persistent classes --> <mapping /> <mapping resource="com/serup/model/Teacher.hbm.xml" /> </session-factory></hibernate-configuration>
Sobald das Projekt die Datenbank geändert hat, muss in dieser Datei nur mehrere Attribute geändert werden, und der Logikcode der Geschäftsschicht muss nicht geändert werden.
Die Verwendung von Hibernate für die Entwicklung wird empfohlen:
** Domain-Objekt ---> Zuordnung ---> Datenbank Mit anderen Worten, Objekte und Tabellen müssen eine Zuordnung haben, und diese Zuordnung hat zwei Konfigurationsmethoden in Hibernate **
1. XML -Methode (Klasse name.hbm.xml)
Stellen Sie die Zuordnungsbeziehung zwischen Tabelle und Klasse über die HBM -Datei fest
2. Annotationsmethode
Später wurde es mit Reverse Engineering viel einfacher und Sie können die entsprechende Datei direkt über die Datenbanktabelle generieren.
Mybatis
In MyBatis stützt sich dieser Mechanismus auch auf einer Konfigurationsdatei mybatis-config.xml (platziert im SRC-Verzeichnis)
<configuration> <properties ressourcen = " type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </Umgebungen> <mappers> <!-Zuordnen von Dateien, um spezifische CRUD-Operationen zu vervollständigen-> <Mapper Resource = "Com/Demo/Domain/UsMapper.xml"/> </mappers> </configuration> Auf diese Weise müssen Sie jedes Mal, wenn Sie die Datenbank ändern, die Konfigurationsdatei nur ändern.
Die Verwendung von MyBatis für die Entwicklung empfiehlt Folgendes:
** Erstellen Sie eine Datenbank und erstellen Sie verschiedene Tabellen ---> Reverse Engineering generiert automatisch den Code, der für die MyBatis-Ausführung erforderlich ist (mapper.java, mapper.xml, po ..) ---> Schreiben Sie die Steuerungsschicht und Serviceschicht gemäß der Geschäftslogik. **
Unterschiede
Es gibt verschiedene Vergleiche im Internet, und ich spreche nur über verschiedene Punkte, denke ich
1. Hibernate hat eine objektorientierte Abfragesprache namens HQL. Das ist sehr mächtig. Es ermöglicht Affen, die SQL -Anweisungen nicht kennen, um die Datenbank hinzuzufügen, zu löschen, zu ändern und zu durchsuchen, aber dies ist auch seine Schwäche. SQL -Anweisungen können nicht optimiert werden.
2. MyBatis erfordert eine SQL -Anweisung -Konfiguration, was bedeutet, dass noch grundlegende Kenntnisse der Datenbank erforderlich sind, um loszulegen. Darüber hinaus müssen Anfänger bei der Ergebniskartierung viele Fallstricke gestoßen haben.
3. Ich habe noch nie ein besonders großes Projekt durchgeführt. Wenn es keine speziellen Leistungsanforderungen gibt, ist es immer noch einfacher, Funktionen zu implementieren.
Systemabstimmung
Hibernate -Tuning -Lösung
MyBatis -Tuning -Lösung
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Referenzwert für das Studium oder die Arbeit eines jeden hat. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen. Vielen Dank für Ihre Unterstützung bei Wulin.com.