Maven + Spring + Hibernate + Exemple MySql

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.

image

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







    
      
    

    
       
         org.hibernate.dialect.MySQLDialect
         true
       
     

     
    
           /hibernate/Stock.hbm.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