Maven + Spring + Hibernate + MySQL Beispiel
In diesem Beispiel wird Maven verwendet, um eine einfache Java-Projektstruktur zu erstellen. Außerdem wird gezeigt, wie Sie mit Hibernate in Spring Framework die Daten in der MySQL-Datenbank bearbeiten (einfügen, auswählen, aktualisieren und löschen).
Endgültige Projektstruktur
Ihre endgültige Projektdateistruktur sollte genau wie folgt aussehen: Wenn Sie bei der Erstellung der Ordnerstruktur verloren gehen, überprüfen Sie diese Ordnerstruktur hier.
1. Tabellenerstellung
Erstellen Sie eine Bestandsliste in der MySQL-Datenbank. SQL-Anweisung wie folgt:
CREATE TABLE `example`.`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 AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
2. Projektdateistruktur
Erstellen Sie eine schnelle Projektdateistruktur mit dem Maven-Befehl 'mvn archetype:generate',see example here. Konvertieren Sie es in ein Eclipse-Projekt (mvn eclipse:eclipse) und importieren Sie es in die Eclipse-IDE.
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. Pom.xml file configuration
Fügen Sie die Dateien Spring, Hibernate, MySQL und deren Abhängigkeit in die Datei pom.xml des Maven ein.
4.0.0 com.example.common SpringExample jar 1.0-SNAPSHOT SpringExample http://maven.apache.org junit junit 3.8.1 test org.springframework spring 2.5.6 cglib cglib 2.2 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 antlr antlr 2.7.7
4. Model & BO & DAO
Das MusterModel,Business Object (BO) undData Access Object (DAO) ist nützlich, um die Ebene eindeutig zu identifizieren und ein Durcheinander der Projektstruktur zu vermeiden.
Lagermodell
Eine Bestandsmodellklasse, um die Bestandsdaten später zu speichern.
package com.example.stock.model; import java.io.Serializable; public class Stock implements Serializable { private static final long serialVersionUID = 1L; private Long stockId; private String stockCode; private String stockName; //getter and setter methods... }
Bestandsgeschäftsobjekt (BO)
Stock Business Object (BO) -Schnittstelle und -Implementierung, wird zum Speichern der Geschäftsfunktion des Projekts verwendet. Die CRUD-Funktion (Real Database Operations) sollte nicht in diese Klasse einbezogen werden. Stattdessen wird eine DAO-Klasse (StockDao) verwendet.
package com.example.stock.bo; import com.example.stock.model.Stock; public interface StockBo { void save(Stock stock); void update(Stock stock); void delete(Stock stock); Stock findByStockCode(String stockCode); }
package com.example.stock.bo.impl; import com.example.stock.bo.StockBo; import com.example.stock.dao.StockDao; import com.example.stock.model.Stock; public class StockBoImpl implements StockBo{ StockDao stockDao; public void setStockDao(StockDao stockDao) { this.stockDao = stockDao; } public void save(Stock stock){ stockDao.save(stock); } public void update(Stock stock){ stockDao.update(stock); } public void delete(Stock stock){ stockDao.delete(stock); } public Stock findByStockCode(String stockCode){ return stockDao.findByStockCode(stockCode); } }
Bestandsdatenzugriffsobjekt
Die Dao-Implementierungsklasse ist eine Standard-DAO-Schnittstelle und -Implementierung und erweitert die „HibernateDaoSupport“ des Frühlings, um den Hibernate-Support im Spring-Framework zu ermöglichen. Jetzt können Sie die Hibernate-Funktion übergetHibernateTemplate() ausführen.
package com.example.stock.dao; import com.example.stock.model.Stock; public interface StockDao { void save(Stock stock); void update(Stock stock); void delete(Stock stock); Stock findByStockCode(String stockCode); }
package com.example.stock.dao.impl; import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.example.stock.dao.StockDao; import com.example.stock.model.Stock; public class StockDaoImpl extends HibernateDaoSupport implements StockDao{ public void save(Stock stock){ getHibernateTemplate().save(stock); } public void update(Stock stock){ getHibernateTemplate().update(stock); } public void delete(Stock stock){ getHibernateTemplate().delete(stock); } public Stock findByStockCode(String stockCode){ List list = getHibernateTemplate().find( "from Stock where stockCode=?",stockCode ); return (Stock)list.get(0); } }
5. Ressourcenkonfiguration
Erstellen Sie einenresources-Ordner unter‘project_name/main/java/. Maven behandelt alle Dateien in diesem Ordner als Ressourcendatei. Es wird verwendet, um die Konfigurationsdatei von Spring, Hibernate und anderen zu speichern.
Ruhezustand
Erstellen Sie eine Zuordnungsdatei für den Ruhezustand (Stock.hbm.xml) für die Bestandsliste und legen Sie sie im Ordner "resources/hibernate/" ab.
Federkonfiguration
Datenbankbezogen….
Erstellen Sie eine Eigenschaftendatei(database.properties) für die Datenbankdetails und legen Sie sie im Ordner "resources/properties" ab. Es wird empfohlen, die Datenbankdetails und die Spring Bean-Konfiguration in verschiedene Dateien zu unterteilen.
database.properties
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/example jdbc.username=root jdbc.password=password
Erstellen Sie eine Bean-Konfigurationsdatei "dataSource" (DataSource.xml) für Ihre Datenbank, importieren Sie die Eigenschaften aus database.properties und legen Sie sie im Ordner "“resources/database" ab.
DataSource.xml
properties/database.properties
Ruhezustand im Zusammenhang….
Erstellen Sie eine Session Factory Bean-Konfigurationsdatei(Hibernate.xml) und legen Sie sie im Ordner“resources/database ab. DieseLocalSessionFactoryBean-Klasse richtet eine gemeinsam genutzte Hibernate SessionFactory in einem Spring-Anwendungskontext ein.
Hibernate.xml
Frühlingsbohnen verwandt….
Erstellen Sie eine Bean-Konfigurationsdatei (Stock.xml) für BO- und DAO-Klassen und legen Sie sie im Ordner "resources/spring" ab. Injizieren Sie die Dao-Bohne (stockDao) in die Bo-Bohne (stockBo). sessionFactory Bean in den stockDao.
Stock.xml
Importieren Sie alle Bean-Konfigurationsdateien von Spring in eine einzige Datei (BeanLocations.xml) und legen Sie sie im Ordner "resources/config" ab.
BeanLocations.xml
6. Starte es
Sie haben alle Dateien und Konfigurationen, führen Sie es aus.
package com.example.common; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.example.stock.bo.StockBo; import com.example.stock.model.Stock; public class App { public static void main( String[] args ) { ApplicationContext appContext = new ClassPathXmlApplicationContext("spring/config/BeanLocations.xml"); StockBo stockBo = (StockBo)appContext.getBean("stockBo"); /** insert **/ Stock stock = new Stock(); stock.setStockCode("7668"); stock.setStockName("HAIO"); stockBo.save(stock); /** select **/ Stock stock2 = stockBo.findByStockCode("7668"); System.out.println(stock2); /** update **/ stock2.setStockName("HAIO-1"); stockBo.update(stock2); /** delete **/ stockBo.delete(stock2); System.out.println("Done"); } }
Ausgabe
Hibernate: insert into example.stock (STOCK_CODE, STOCK_NAME) values (?, ?) Hibernate: select stock0_.STOCK_ID as STOCK1_0_, stock0_.STOCK_CODE as STOCK2_0_, stock0_.STOCK_NAME as STOCK3_0_ from example.stock stock0_ where stock0_.STOCK_CODE=? Stock [stockCode=7668, stockId=11, stockName=HAIO] Hibernate: update example.stock set STOCK_CODE=?, STOCK_NAME=? where STOCK_ID=? Hibernate: delete from example.stock where STOCK_ID=? Done
Laden Sie es herunter -Spring-Hibernate-Example.zip