Как работать с MySQL в Java – Hibernate XML Mapping – Devcolibri – Android для начинающих

Как работать с MySQL в Java – Hibernate XML Mapping

В данном уроке я продемонстрирую как работать с 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

117057
17/04/2013

34 комментариев к статье "Как работать с MySQL в Java - Hibernate XML Mapping"

Добавить комментарий

Сайт использует cookie-файлы для того, чтобы вам было удобнее им пользоваться. Для продолжения работы с сайтом, вам необходимо принять использование cookie-файлов.

Я ознакомлен(а)