Рубрики
Без рубрики

Maven + Весна + Гибернация + Пример MySQL

– Maven + Весна + Гибернация + Пример MySQL

Автор оригинала: mkyong.

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

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

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

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

Создайте таблицу “запасы” в базе данных MySQL. Инструкция SQL выглядит следующим образом:

CREATE TABLE  `mkyong`.`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: создать ‘, см. Пример здесь . Преобразуйте его в проект Eclipse ( mvn eclipse: eclipse ) и импортируйте в среду разработки Eclipse.

E:\workspace>mvn archetype:generate
[INFO] Scanning for projects...
...
Choose a number:  
(1/2/3....) 15: : 15
...
Define value for groupId: : com.mkyong.common
Define value for artifactId: : HibernateExample
Define value for version:  1.0-SNAPSHOT: :
Define value for package:  com.mkyong.common: : com.mkyong.common
[INFO] OldArchetype created in dir: E:\workspace\HibernateExample
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------

3. Pom.xml конфигурация файла

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


  4.0.0
  com.mkyong.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) полезен для четкой идентификации слоя, чтобы избежать путаницы в структуре проекта.

Модель Запаса

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

package com.mkyong.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), он используется для хранения бизнес-функции проекта, в этом классе не должны использоваться операции с реальными базами данных (CRUD), вместо этого для этого используется класс DAO (stockdao).

package com.mkyong.stock.bo;

import com.mkyong.stock.model.Stock;

public interface StockBo {
	
	void save(Stock stock);
	void update(Stock stock);
	void delete(Stock stock);
	Stock findByStockCode(String stockCode);
}
package com.mkyong.stock.bo.impl;

import com.mkyong.stock.bo.StockBo;
import com.mkyong.stock.dao.StockDao;
import com.mkyong.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 ” для поддержки режима гибернации в Spring framework. Теперь вы можете выполнить функцию гибернации с помощью getHibernateTemplate() .

package com.mkyong.stock.dao;

import com.mkyong.stock.model.Stock;

public interface StockDao {
	
	void save(Stock stock);
	void update(Stock stock);
	void delete(Stock stock);
	Stock findByStockCode(String stockCode);

}
package com.mkyong.stock.dao.impl;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.mkyong.stock.dao.StockDao;
import com.mkyong.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. Конфигурация ресурсов

Создайте папку ” ресурсы ” в папке “имя_проекта/главная/java/ “, Maven будет обрабатывать все файлы в этой папке как файл ресурсов. Он будет использоваться для хранения файла конфигурации Spring, Hibernate и других.

Конфигурация перехода в спящий режим

Создайте файл отображения гибернации ( Stock.hbm.xml ) для таблицы запасов поместите ее в папку ” ресурсы/спящий режим/ “.






    
        
            
            
        
        
            
        
        
            
        
    

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

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

Создайте файл свойств (database.properties ) для получения сведений о базе данных поместите ее в папку ” ресурсы/свойства “. Рекомендуется разделять сведения о базе данных и конфигурацию компонентов Spring в разных файлах.

Рекомендуется разделять сведения о базе данных и конфигурацию компонентов Spring в разных файлах.

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

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

Создайте файл конфигурации компонента “Источник данных” (|| DataSource.xml ||) для вашей базы данных и импортируйте свойства из database.properties, поместите их в папку || “ресурсы/база данных||”.


	

	
		properties/database.properties
	



	
	
	
	



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

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

LocalSessionFactoryBean||класс настроит общий режим гибернации SessionFactory в контексте приложения Spring.



    



    
      
    

    
       
         org.hibernate.dialect.MySQLDialect
         true
       
     
    	
     
	
           /hibernate/Stock.hbm.xml
	
      	

    
    

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

Создайте файл конфигурации компонента ( Stock.xml ) для классов BO и DAO поместите его в папку ” ресурсы/весна “. Зависимость вводит компонент dao (stockdao) в компонент bo (stock Bo); компонент SessionFactory в компонент stockdao.

Зависимость вводит компонент dao (stockdao) в компонент bo (stock Bo); компонент SessionFactory в компонент stockdao.



    
   
   		
   
 
   
   
   		
   
   

Импортируйте все файлы конфигурации компонентов Spring в один файл (BeanLocations.xml ), поместите его в папку ” ресурсы/конфигурация “.

Импортируйте все файлы конфигурации компонентов Spring в один файл (BeanLocations.xml ), поместите его в папку “||ресурсы/конфигурация||”.



	
	
	
	
	
	
	

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

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

package com.mkyong.common;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.mkyong.stock.bo.StockBo;
import com.mkyong.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 mkyong.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 mkyong.stock stock0_ where stock0_.STOCK_CODE=?
Stock [stockCode=7668, stockId=11, stockName=HAIO]
Hibernate: update mkyong.stock set STOCK_CODE=?, STOCK_NAME=? where STOCK_ID=?
Hibernate: delete from mkyong.stock where STOCK_ID=?
Done

Оригинал: “https://mkyong.com/spring/maven-spring-hibernate-mysql-example/”