Пример Maven Spring Hibernate MySql

Пример Maven + Spring + Hibernate + MySql

В этом примере Maven будет использован для создания простой структуры проекта Java, а также продемонстрировано, как использовать Hibernate в среде Spring для работы с данными (вставка, выбор, обновление и удаление) в базе данных MySQL.

Окончательная структура проекта

Ваша окончательная структура файла проекта должна выглядеть примерно так: если вы потерялись в создании структуры папок, просмотрите эту структуру папок здесь.

image

1. Создание таблицы

Создайте «фондовую» таблицу в базе данных MySQL. SQL-оператор следующим образом:

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. Структура файла проекта

Создайте быструю файловую структуру проекта с помощью команды Maven «mvn archetype:generate»,see example here. Преобразуйте его в проект Eclipse (mvn eclipse:eclipse) и импортируйте в 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

Добавьте Spring, Hibernate, MySQL и их зависимости в файле Maven pom.xml.


  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. Модель & BO & DAO

ШаблоныModel,Business Object (BO) иData Access Object (DAO) полезны для четкой идентификации уровня, чтобы избежать нарушения структуры проекта.

Фондовая модель

Класс модели Stock для последующего хранения данных о запасах.

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...
}
Фондовый бизнес-объект (BO))

Интерфейс и реализация фондового бизнес-объекта (BO), который используется для хранения бизнес-функции проекта, в этот класс не должны включаться реальные операции с базами данных (CRUD), вместо этого он имеет класс DAO (StockDao) для этого.

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);
    }
}
Объект доступа к данным запаса

Стандартный интерфейс и реализация DAO, класс реализации dao расширяет Spring «HibernateDaoSupport», чтобы обеспечить поддержку Hibernate в среде Spring. Теперь вы можете выполнить функцию Hibernate черезgetHibernateTemplate().

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. Конфигурация ресурса

Создайте папку «resources» в папке‘project_name/main/java/ », Maven будет рассматривать все файлы в этой папке как файлы ресурсов. Он будет использоваться для хранения конфигурационного файла Spring, Hibernate и других.

Конфигурация гибернации

Создайте файл сопоставления Hibernate (Stock.hbm.xml) для таблицы Stock, поместите его в папку «resources/hibernate/».





    
        
            
            
        
        
            
        
        
            
        
    
Конфигурация пружины

Связано с базой данных….

Создайте файл свойств(database.properties) для деталей базы данных, поместите его в папку «resources/properties». Рекомендуется разделять детали базы данных и конфигурацию bean-компонента Spring в разные файлы.

database.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/example
jdbc.username=root
jdbc.password=password

Создайте файл конфигурации bean-компонента dataSource (DataSource.xml) для своей базы данных, импортируйте свойства из database.properties и поместите его в папку“resources/database.

DataSource.xml




    
        properties/database.properties
    



    
    
    
    


Связанные с гибернацией….

Создайте файл конфигурации компонента фабрики сеанса(Hibernate.xml), поместите его в папку“resources/database ». Этот классLocalSessionFactoryBean настроит общую Hibernate SessionFactory в контексте приложения Spring.

Hibernate.xml







    
      
    

    
       
         org.hibernate.dialect.MySQLDialect
         true
       
     

     
    
           /hibernate/Stock.hbm.xml
    
      

    

Связанные весенние бобы….

Создайте файл конфигурации bean-компонента (Stock.xml) для классов BO и DAO, поместите его в папку «resources/spring». Зависимость вводит bean-компонент dao (stockDao) в bean-компонент bo (stockBo); Сессия Фабричный боб на складе Дао.

Stock.xml



    
   
        
   

   
   
        
   

Импортируйте все файлы конфигурации bean-компонентов Spring в один файл (BeanLocations.xml), поместите его в папку «resources/config».

BeanLocations.xml



    
    
    

    
    

6. Запустить его

У вас есть все файлы и конфигурации, запустите его.

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");
    }
}

выход

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
Related