Exemple Maven + Spring + Hibernate + MySql
Cet exemple utilisera Maven pour créer une structure de projet Java simple et montrera comment utiliser Hibernate dans le framework Spring pour effectuer les travaux de manipulation de données (insérer, sélectionner, mettre à jour et supprimer) dans la base de données MySQL.
Structure finale du projet
La structure de votre fichier de projet final devrait ressembler exactement à la suivante, si vous vous perdez dans la création de la structure de dossiers, veuillez consulter cette structure de dossiers ici.
1. Création de table
Créez une table «stock» dans la base de données MySQL. Instruction SQL comme suit:
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. Structure du fichier de projet
Créez une structure de fichier de projet rapide avec la commande Maven ‘mvn archetype:generate’,see example here. Convertissez-le en projet Eclipse (mvn eclipse:eclipse) et importez-le dans 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
Ajoutez Spring, Hibernate, MySQL et leur dépendance dans le fichier pom.xml de Maven.
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. Modèle & BO & DAO
Le motifModel,Business Object (BO) etData Access Object (DAO) est utile pour identifier clairement le calque pour éviter de gâcher la structure du projet.
Modèle de stock
Une classe de modèle Stock pour stocker les données de stock ultérieurement.
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... }
Objet commercial stock (BO))
Interface et implémentation de l’objet métier (BO), il est utilisé pour stocker la fonction métier du projet, les opérations réelles de la base de données (CRUD) ne devraient pas être impliquées dans cette classe, mais il a une classe DAO (StockDao) pour le faire.
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); } }
Objet d'accès aux données de stock
Interface et implémentation Stock DAO, la classe d'implémentation dao étend les «HibernateDaoSupport» de Spring pour prendre en charge Hibernate dans le framework Spring. Maintenant, vous pouvez exécuter la fonction Hibernate viagetHibernateTemplate().
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. Configuration des ressources
Créez un dossier «resources» sous‘project_name/main/java/ », Maven traitera tous les fichiers de ce dossier comme des fichiers de ressources. Il sera utilisé pour stocker le fichier de configuration Spring, Hibernate et autres.
Configuration de mise en veille prolongée
Créez un fichier de mappage Hibernate (Stock.hbm.xml) pour la table Stock, placez-le dans le dossier «resources/hibernate/».
Configuration du ressort
Lié à la base de données….
Créez un fichier de propriétés(database.properties) pour les détails de la base de données, placez-le dans le dossier «resources/properties». Il est recommandé de faire disparaître les détails de la base de données et la configuration du bean Spring dans différents fichiers.
database.properties
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/example jdbc.username=root jdbc.password=password
Créez un fichier de configuration de bean «dataSource» (DataSource.xml) pour votre base de données, et importez les propriétés de database.properties, placez-le dans le dossier“resources/database ».
DataSource.xml
properties/database.properties
Hibernate lié….
Créez un fichier de configuration du bean de fabrique de session(Hibernate.xml), placez-le dans le dossier“resources/database ”. Cette classeLocalSessionFactoryBean installera une SessionFactory Hibernate partagée dans un contexte d'application Spring.
Hibernate.xml
Les haricots de printemps liés….
Créez un fichier de configuration de bean (Stock.xml) pour les classes BO et DAO, placez-le dans le dossier «resources/spring». Dépendance injecter le haricot dao (stockDao) dans le haricot bo (stockBo); sessionFactory bean dans le stockDao.
Stock.xml
Importez tous les fichiers de configuration des beans Spring dans un seul fichier (BeanLocations.xml), placez-le dans le dossier «resources/config».
BeanLocations.xml
6. Exécuter
Vous avez tous les fichiers et configurations, exécutez-le.
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"); } }
sortie
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
Téléchargez-le -Spring-Hibernate-Example.zip