Пример Maven + Spring + Hibernate + MySql
В этом примере Maven будет использован для создания простой структуры проекта Java, а также продемонстрировано, как использовать Hibernate в среде Spring для работы с данными (вставка, выбор, обновление и удаление) в базе данных MySQL.
Окончательная структура проекта
Ваша окончательная структура файла проекта должна выглядеть примерно так: если вы потерялись в создании структуры папок, просмотрите эту структуру папок здесь.

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
Связанные весенние бобы….
Создайте файл конфигурации 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
Скачать -Spring-Hibernate-Example.zip