Maven 2 + Hibernate 3.2 + MySQL-Beispiel (XML-Zuordnung)
Note
Dieser Artikel ist veraltet. Weitere Informationen finden Sie im neuesten Hibernate 3.6-Tutorial unter -Maven 3 + Hibernate 3.6 + Oracle 11g Example (XML Mapping).
Diese Kurzanleitung zeigt Ihnen, wie Sie mit Maven ein einfaches Java-Projekt erstellen und mit Hibernate einen Datensatz in die MySQL-Datenbank einfügen.
In diesem Artikel verwendete Tools und Technologien:
-
Maven 2.2.1
-
JDK 1.6.0_13
-
Ruhezustand 3.2.3.GA
-
MySQL 5.0
1. Tabellenerstellung
MySQL-Skript zum Erstellen einer "Stock" -Tabelle.
DROP TABLE IF EXISTS `stock`; CREATE TABLE `stock` ( `STOCK_ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `STOCK_CODE` VARCHAR(10) NOT NULL, `STOCK_NAME` VARCHAR(20) NOT NULL, PRIMARY KEY (`STOCK_ID`) USING BTREE, UNIQUE KEY `UNI_STOCK_NAME` (`STOCK_NAME`), UNIQUE KEY `UNI_STOCK_ID` (`STOCK_CODE`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. Projektstruktur mit Maven generieren
Geben Sie an der Eingabeaufforderung "mvn archetype:generate
" aus, wählen Sie Projekt Nr. 15 aus, um ein Schnellstart-Java-Projekt von Maven zu erstellen, und geben Sie dann die Informationen Ihres Projekts ein - groupId, artefaktId und package.
E:\workspace>mvn archetype:generate [INFO] Scanning for projects... ... Choose a number: (1/2/3....) 15: : 15 ... Define value for groupId: : com.example.common Define value for artifactId: : HibernateExample Define value for version: 1.0-SNAPSHOT: : Define value for package: com.example.common: : com.example.common [INFO] OldArchetype created in dir: E:\workspace\HibernateExample [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------
3. In Eclipse-Projekt konvertieren
Geben Sie "mvn eclipse:eclipse
" ein, um das neu generierte Projekt in das Eclipse-Projekt zu konvertieren
4. Importieren Sie das konvertierte Projekt in Eclipse IDE
Wählen Sie in Eclipse IDE "Datei" -> "Importieren" -> "Allgemeiner Ordner", "Vorhandene Projekte in Arbeitsbereich" -> "Wählen Sie den Speicherort für Ihren Projektordner". Done
5. Erstellen Sie einen Ressourcenordner
Erstellen Sie einen Ressourcenordner unter dem Ordner "src/main", "/src/main/resources". Später werden alle XML-Dateien des Ruhezustands hier abgelegt. Maven behandelt alle Dateien in diesem Ordner als Ressourcendateien und kopiert sie automatisch in die Ausgabeklassen.
6. Projektstruktur überprüfen
Stellen Sie sicher, dass die Ordnerstruktur wie folgt ist
Maven generiert die gesamte Java-Standardordnerstruktur für Sie (neben dem Ressourcenordner enthält der Schnellstart-Archetyp 15 nicht den Ressourcenordner).
7. Hibernate- und MySQL-Abhängigkeit hinzufügen
Ändern Sie diepom.xml
-Datei des Maven und fügen Sie Unterstützung für Hibernate und MySQL hinzu. Hibernate wird benötigt dom4j, commons-logging, commons-collections und cglib als Abhängigkeitsbibliothek, füge es hinzu.
Datei: pom.xml
4.0.0 com.example.common HibernateExample jar 1.0-SNAPSHOT HibernateExample http://maven.apache.org junit junit 3.8.1 test mysql mysql-connector-java 5.1.9 hibernate hibernate3 3.2.3.GA dom4j dom4j 1.6.1 commons-logging commons-logging 1.1.1 commons-collections commons-collections 3.2.1 cglib cglib 2.2 javax.transaction jta 1.1
Wenn Sie diemvn eclipse:eclipse
ausgeben, lädt Maven alle Hibernate- und MySQL-Bibliotheken automatisch herunter und legt sie in Mavens lokalem Repository ab. Gleichzeitig fügt Maven die heruntergeladenen Bibliotheken aus Abhängigkeitsgründen zu Eclipse „.classpath“ hinzu. Ich mag es wieder :), es ist nicht nötig, die Bibliothek zu finden und sie selbst zu kopieren.
8. Hibernate-Mapping-Datei + Modellklasse erstellen
Voraussetzung ist, dass eine Tabelle mit dem Namen "stock" erstellt wurde. Jetzt müssen Sie eine XML-Zuordnungsdatei für den Ruhezustand und eine Modellklasse dafür erstellen.
Erstellen Sie eineStock.hbm.xml
-Datei und fügen Sie sie in „src/main/resources/com/example/common/Stock.hbm.xml“ ein. Erstellen Sie den Ordner "resources / com / example / common /", falls dieser nicht vorhanden ist.
Datei: Stock.hbm.xml
Erstellen Sie eine Stock.java-Datei und geben Sie sie in "src/main/java/com/example/common/Stock.java" ein.
Datei: Stock.java
package com.example.common; /** * Model class for Stock */ public class Stock implements java.io.Serializable { private static final long serialVersionUID = 1L; private Integer stockId; private String stockCode; private String stockName; public Stock() { } public Stock(String stockCode, String stockName) { this.stockCode = stockCode; this.stockName = stockName; } public Integer getStockId() { return this.stockId; } public void setStockId(Integer stockId) { this.stockId = stockId; } public String getStockCode() { return this.stockCode; } public void setStockCode(String stockCode) { this.stockCode = stockCode; } public String getStockName() { return this.stockName; } public void setStockName(String stockName) { this.stockName = stockName; } }
Note
Das Erstellen der Modellklasse und Zuordnungsdateien sind in großen Anwendungen recht mühsam. Mit Hibernate-Tools kann dies automatisch generiert werden. Überprüfen Sie diesen Artikel -Hibernate tools to generate it automatically.
9. Erstellen Sie eine Ruhezustands-Konfigurationsdatei
Erstellen Sie die Konfigurationsdatei eines Ruhezustands und legen Sie sie im Ressourcen-Stammordner "src/main/resources/hibernate.cfg.xml" ab. Tragen Sie Ihre MySQL-Einstellung entsprechend ein.
Datei: hibernate.cfg.xml
false com.mysql.jdbc.Driver password jdbc:mysql://localhost:3306/example root org.hibernate.dialect.MySQLDialect true
Wenn Sie die Eigenschaft "show_sql" auf "true" setzen, wird die Hibernate-SQL-Anweisung ausgegeben. Hibernate Dialect teilt Ihrer Hibernate-Anwendung mit, welches SQL generiert werden muss, um mit Ihrer Datenbank zu kommunizieren. Weitere Informationen zum Datenbankdialekt finden Sie in diesem Artikel -Hibernate dialect collection.
10. Erstellen Sie die Hibernate Utility-Klasse
Erstellen Sie eine HibernateUtil.java-Klasse, um den Start von Hibernate zu erledigen und die Sitzung einfach abzurufen. Erstellen Sie einen Persistenzordner und legen Sie diese Datei in "src/main/java/com/example/persistence/HibernateUtil.java" ab.
Datei: HibernateUtil.java
package com.example.persistence; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); private static SessionFactory buildSessionFactory() { try { // Create the SessionFactory from hibernate.cfg.xml return new Configuration().configure().buildSessionFactory(); } catch (Throwable ex) { // Make sure you log the exception, as it might be swallowed System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } public static void shutdown() { // Close caches and connection pools getSessionFactory().close(); } }
11. Überprüfen Sie die Projektstruktur erneut
Klingt so, als würden Sie viele neue Dateien und Ordner erstellen, diese überprüfen und die Ordnerstruktur wie folgt überprüfen
12. Code es, um den Datensatz zu speichern
Ändern Sie die Standardklasse App.java wie folgt:
Datei: App.java
package com.example.common; import org.hibernate.Session; import com.example.persistence.HibernateUtil; public class App { public static void main( String[] args ) { System.out.println("Maven + Hibernate + MySQL"); Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); Stock stock = new Stock(); stock.setStockCode("4715"); stock.setStockName("GENM"); session.save(stock); session.getTransaction().commit(); } }
13. Führen Sie es aus und sehen Sie die Ausgabe
Führen Sie Ihre App.java aus und fügen Sie einen neuen Datensatz in die Tabelle "Stock" ein.
Maven + Hibernate + MySQL ... Dec 17, 2009 5:05:26 PM org.hibernate.impl.SessionFactoryObjectFactory addInstance INFO: Not binding factory to JNDI, no JNDI name configured Hibernate: insert into example.stock (STOCK_CODE, STOCK_NAME) values (?, ?)
Erledigt.
Laden Sie es herunter -Maven_Hibernate_MySQL_Example.zip (12kb)