Maven Spring Hibernate MySql-Beispiel

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.

image

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






    
      
    

    
       
         org.hibernate.dialect.MySQLDialect
         true
       
     

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