Пример 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