Автор оригинала: 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.
Весенние бобы, связанные….
Создайте файл конфигурации компонента ( 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/”