В данном уроке я продемонстрирую как работать с MySQL базой данных используя Maven 3 и Hibernate 3.2.
В этом уроке я кратко покажу вам, как использовать Maven для создания простого проекта Java с использованием Hibernate для работы с базой данных MySQL.
Что нам потребуется?
1) Maven 3.0.5
2) JDK 1.7.0_17
3) БД MySQL 5.5.30
4) Hibernate 4.1.11.Final
5) JDBC MySQL 5.1.24
Шаг 1. Создаем таблицу.
В вашей БД создадим таблицу user:
DROP TABLE IF EXISTS `user`; CREATE TABLE user ( `USER_ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `FIRST_NAME` VARCHAR(20) NOT NULL, `LAST_NAME` VARCHAR(20) NOT NULL, PRIMARY KEY (`USER_ID`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Шаг 2. Создание Maven проекта
В Intellij IDEA выбираем File->New Project->Maven module:
Шаг 3. Структура проекта
Создадим теперь класс EnterPoint.java который будет запускать наше приложение.
После чего структура проекта у вас должна выглядеть следующим образом:
Шаг 4. Добавляем зависимости
Теперь в pom.xml
добавим зависимости для MySQL и Hibernate:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.devcolibri.common</groupId> <artifactId>WorkFromDB</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <hibernate.version>4.1.11.Final</hibernate.version> <mysql.version>5.1.24</mysql.version> </properties> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> <version>1.1</version> </dependency> </dependencies> </project>
Шаг 5. Создаем Mapping файл
Создайте User.hbm.xml
“src\main\resources\com\devcolibri\User.hbm.xml“:
Файл User.hbm.xml выглядит так:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.devcolibri.entity.User" table="user" catalog="test"> <id name="userId" type="java.lang.Integer"> <column name="USER_ID" /> <generator class="identity" /> </id> <property name="firstName" type="string"> <column name="FIRST_NAME" length="20" not-null="true" unique="true" /> </property> <property name="lastName" type="string"> <column name="LAST_NAME" length="20" not-null="true" unique="true" /> </property> </class> </hibernate-mapping>
Этот класс описывает таблицу, что в БД и сущность User.java, давайте её создадим.
catalog=’test’ – это имя БД.
table=’user’ – это имя таблицы на которую мы привязываем класс User.java.
Для этого создадим пакет entity (src\main\java\com\devcolibri\entity) и в нем создадим сущность User.java:package com.devcolibri.entity;
package com.devcolibri.entity; import java.io.Serializable; public class User implements Serializable { private static final long serialVersionUID = 1L; private Integer userId; private String firstName; private String lastName; public User(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public User() { } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } }
Это простой Java класс с атрибутами и Getter & Setter для них.
Шаг 6. Создание конфигурационного файла Hibernate
Создадим конфигурационный файл для Hibernete hibernate.cfg.xml
по пути “src\main\resources\hibernate.cfg.xml” со следующим содержимым:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.bytecode.use_reflection_optimizer">false</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.password">root</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <mapping resource="com/devcolibri/User.hbm.xml"></mapping> </session-factory> </hibernate-configuration>
Этот файл отвечает за соединение с БД и связкой наших mapping с ней.
Строка 8 говорит о том что для роботы с БД мы используем JDBC MySQL драйвер.
Строка 9 – пароль к БД.
Строка 10 – host к БД, где test – база данных.
Строка 11 – логин вашего пользователя к БД.
Строка 15 – замапенный класс User, что бы hibernate знал за какую таблицу в БД отвечает этот класс.
Шаг 7. Создание Hibernate Utility класса
Этот класс будет заботится о начале сессии.
Создадим класс HibernateUtil.java
тут “src\main\java\com\devcolibri\persistence\HibernateUtil.java” со следующим содержанием:
package com.devcolibri.persistence; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); private static ServiceRegistry serviceRegistry; private static SessionFactory buildSessionFactory() { try { // Создает сессию с hibernate.cfg.xml Configuration configuration = new Configuration(); configuration.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); return configuration.buildSessionFactory(serviceRegistry); } catch (Throwable ex) { System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } public static void shutdown() { // Чистит кеш и закрывает соединение с БД getSessionFactory().close(); } }
Шаг 8. Финишная структура проекта
Теперь проверим структуру проекта, она должна совпадать с этой:
Шаг 9. Сохранение user в БД
Теперь в класс EnterPoint.java допишем следующий код:
package com.devcolibri; import com.devcolibri.entity.User; import com.devcolibri.persistence.HibernateUtil; import org.hibernate.Session; public class EnterPoint { public static void main(String[] args) { System.out.println("Maven + Hibernate + MySQL"); Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); User user = new User(); user.setFirstName("Alexander"); user.setLastName("Barchuk"); session.save(user); session.getTransaction().commit(); } }
Шаг 10. Запуск
Запускаем EnterPoint.java и в консоли будут выведены логи Hibernate и такая строчка:
Hibernate: insert into test.user (FIRST_NAME, LAST_NAME) values (?, ?)
это значит что запись успешно добавлена.
Идем в БД и смотрим действительно ли добавлена запись в БД.
p.s. Спасибо за внимание! Если вам урок понравился, то подписывайтесь на обновление в форме ниже.
ПОХОЖИЕ ПУБЛИКАЦИИ
- None Found
34 комментариев к статье "Как работать с MySQL в Java - Hibernate XML Mapping"