Пример Maven 2 Hibernate 3.2 MySQL (сопоставление XML)

Пример Maven 2 + Hibernate 3.2 + MySQL (сопоставление XML)

Note
Эта статья устарела, обратитесь к последнему руководству по Hibernate 3.6 по адресу -Maven 3 + Hibernate 3.6 + Oracle 11g Example (XML Mapping).

В этом кратком руководстве показано, как использовать Maven для создания простого проекта Java и использовать Hibernate для вставки записи в базу данных MySQL.

Инструменты и технологии, используемые в этой статье:

  1. Maven 2.2.1

  2. JDK 1.6.0_13

  3. Hibernate 3.2.3.GA

  4. MySQL 5.0

1. Создание таблицы

MySQL скрипт для создания «биржевой» таблицы.

DROP TABLE IF EXISTS `stock`;
CREATE TABLE `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 DEFAULT CHARSET=utf8;

2. Создать структуру проекта с Maven

В командной строке введите «mvn archetype:generate», выберите проект № 15, чтобы быстро создать Java-проект Maven, затем введите информацию о вашем проекте - groupId, artifactId и package.

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. Преобразовать в проект Eclipse

Введите «mvn eclipse:eclipse», чтобы преобразовать созданный проект в проект стиля Eclipse.

4. Импортировать преобразованный проект в Eclipse IDE

В Eclipse IDE выберите «Файл» -> «Импорт» -> «Общая папка», «Существующие проекты в рабочую область» -> «Выбрать папку с проектом». Done

5. Создать папку ресурсов

Создайте папку ресурсов в папке «src/main», «/src/main/resources», позже сюда будут помещены все xml-файлы Hibernate. Maven будет обрабатывать все файлы в этой папке как файлы ресурсов и автоматически копировать их в выходные классы.

6. Обзор структуры проекта

Убедитесь, что структура папок выглядит следующим образом

hibernate-example-1

Maven сгенерирует всю стандартную структуру папок Java для вас (кроме папки ресурсов, архетип быстрого запуска № 15 не содержит папку ресурсов)

7. Добавить Hibernate и MySQL зависимость

Измените файлpom.xml в Maven, добавьте поддержку Hibernate и MySQL. Hibernate требуется dom4j, commons-logging, commons-collection и cglib в качестве библиотеки зависимостей, добавьте ее.

Файл: pom.xml


4.0.0
  com.example.common
  HibernateExample
  jar
  1.0-SNAPSHOT
  HibernateExample
  http://maven.apache.org
  

    
      junit
      junit
      3.8.1
      test
    

        
    
        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
    

    
        cglib
        cglib
        2.2
    
    

    
        javax.transaction
        jta
        1.1
    

  

Введите «mvn eclipse:eclipse», Maven автоматически загрузит все библиотеки Hibernate и MySQL и поместит их в локальный репозиторий Maven. В то же время Maven добавит загруженные библиотеки в Eclipse «.classpath» для целей зависимости. Понравится еще раз :), не нужно искать библиотеку и копировать ее самому.

8. Создать файл отображения Hibernate + класс модели

В соответствии с предварительными требованиями, создается таблица с именем «stock», теперь вам нужно будет создать файл отображения Hibernate XML и класс модели для него.

Создайте файлStock.hbm.xml и поместите его в «src/main/resources/com/example/common/Stock.hbm.xml». Создайте папку «resources / com / example / common /», если она не существует.

Файл: Stock.hbm.xml





    
        
            
            
        
        
            
        
        
            
        
    

Создайте файл Stock.java и поместите его в «src/main/java/com/example/common/Stock.java»

Файл: Stock.java

package com.example.common;

/**
 * Model class for Stock
 */
public class Stock implements java.io.Serializable {

    private static final long serialVersionUID = 1L;

    private Integer stockId;
    private String stockCode;
    private String stockName;

    public Stock() {
    }

    public Stock(String stockCode, String stockName) {
        this.stockCode = stockCode;
        this.stockName = stockName;
    }

    public Integer getStockId() {
        return this.stockId;
    }

    public void setStockId(Integer stockId) {
        this.stockId = stockId;
    }

    public String getStockCode() {
        return this.stockCode;
    }

    public void setStockCode(String stockCode) {
        this.stockCode = stockCode;
    }

    public String getStockName() {
        return this.stockName;
    }

    public void setStockName(String stockName) {
        this.stockName = stockName;
    }

}

Note
Создание класса модели и файлов сопоставления довольно утомительно в большом приложении. С помощью инструментов Hibernate это можно сгенерировать автоматически, проверьте эту статью -Hibernate tools to generate it automatically.

9. Создать файл конфигурации Hibernate

Создайте файл конфигурации Hibernate и поместите его в корневую папку ресурсов «src/main/resources/hibernate.cfg.xml». Заполните ваши настройки MySQL соответственно.

Файл: hibernate.cfg.xml




    
        false
        com.mysql.jdbc.Driver
        password
        jdbc:mysql://localhost:3306/example
        root
        org.hibernate.dialect.MySQLDialect
        true
        
    

Установите для свойства show_sql значение true, чтобы выводить SQL-оператор Hibernate. Hibernate Dialect сообщает вашему приложению Hibernate, какой SQL он должен сгенерировать для взаимодействия с вашей базой данных. Пожалуйста, обратитесь к этой статье для другого диалекта базы данных -Hibernate dialect collection.

10. Создать класс Hibernate Utility

Создайте класс HibernateUtil.java, чтобы позаботиться о запуске Hibernate и легко получить сеанс. Создайте папку сохраняемости и поместите в нее файл «src/main/java/com/example/persistence/HibernateUtil.java»

Файл: HibernateUtil.java

package com.example.persistence;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            return new Configuration().configure().buildSessionFactory();
        }
        catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void shutdown() {
        // Close caches and connection pools
        getSessionFactory().close();
    }

}

11. Еще раз просмотрите структуру проекта

Похоже, создайте много новых файлов и папок, просмотрите его и убедитесь, что структура папок выглядит следующим образом

hibernate-example-2

12. Код, чтобы сохранить запись

Измените класс App.java по умолчанию следующим образом:

Файл: App.java

package com.example.common;

import org.hibernate.Session;
import com.example.persistence.HibernateUtil;

public class App
{
    public static void main( String[] args )
    {
        System.out.println("Maven + Hibernate + MySQL");
        Session session = HibernateUtil.getSessionFactory().openSession();

        session.beginTransaction();
        Stock stock = new Stock();

        stock.setStockCode("4715");
        stock.setStockName("GENM");

        session.save(stock);
        session.getTransaction().commit();
    }
}

13. Запустите его и посмотрите вывод

Запустите ваш App.java, он вставит новую запись в таблицу «Stock».

Maven + Hibernate + MySQL
...
Dec 17, 2009 5:05:26 PM org.hibernate.impl.SessionFactoryObjectFactory addInstance
INFO: Not binding factory to JNDI, no JNDI name configured
Hibernate: insert into example.stock (STOCK_CODE, STOCK_NAME) values (?, ?)

Готово.

Скачать -Maven_Hibernate_MySQL_Example.zip (12kb)