Пример MySQL для Maven 2 Hibernate 3.2 (Аннотация)

Maven 2 + Hibernate 3.2 + MySQL Пример (Аннотация)

Note
Эта статья устарела, и некоторая информация больше не актуальна в последней разработке Hibernate. Вам следует обратиться к этому последнему руководству -Maven 3 + Hibernate 3.6.3 + Oracle 11g Example (Annotation).

Это руководство изменит предыдущийMaven 2 + Hibernate 3.2 + MySQL Example (XML mapping) и заменит файл сопоставления XML Hibernate кодом аннотации.

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

  1. Maven 2.2.1

  2. JDK 1.6.0_13

  3. Hibernate 3.2.3.GA

  4. MySQL 5.0

1. Создать инфраструктуру проекта

Создать инфраструктуру проекта заMaven + Hibernate (XML mapping file) + MySQL Example

2. Добавить репозиторий JBoss

Репозиторий JBoss вpom.xml необходим для загрузки библиотеки аннотаций Hibernate.

 
    
      JBoss repository
      http://repository.jboss.com/maven2/
    
  

3. Добавить Hibernate аннотации зависимость

Добавьте зависимости hibernate-annotations и hibernate-commons-annotations вpom.xml.

    
        hibernate-annotations
        hibernate-annotations
        3.3.0.GA
    

    
        hibernate-commons-annotations
        hibernate-commons-annotations
        3.0.0.GA
    

Файл: pom.xml


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

  
    
      JBoss repository
      http://repository.jboss.com/maven2/
    
  

  

    
    
        mysql
        mysql-connector-java
        5.1.9
    

    
    
        hibernate
        hibernate3
        3.2.3.GA
    

    
    
        hibernate-annotations
        hibernate-annotations
        3.3.0.GA
    

    
        hibernate-commons-annotations
        hibernate-commons-annotations
        3.0.0.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
    

  

4. Обновить путь к классу проекта

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

5. Обновление HibernateUtil.java

Обновите «HibernateUtil», чтобы использовать «AnnotationConfiguration» вместо «Configuration» для создания фабрики сеансов Hibernate.

Ранее использовался «Конфигурация» - для файла отображения XML Hibernate

return new Configuration().configure().buildSessionFactory();

Измените его на «AnnotationConfiguration» - для поддержки аннотаций в спящем режиме

return new AnnotationConfiguration().configure().buildSessionFactory();

Файл: HibernateUtil.java

package com.example.persistence;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            return new AnnotationConfiguration().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();
    }

}

6. Обновить модель класса

Обновите «Stock.java», чтобы использовать аннотацию следующим образом:

Stock.java
package com.example.common;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

@Entity
@Table(name = "stock", catalog = "example", uniqueConstraints = {
        @UniqueConstraint(columnNames = "STOCK_NAME"),
        @UniqueConstraint(columnNames = "STOCK_CODE") })
public class Stock implements java.io.Serializable {

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

    public Stock() {
    }

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

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "STOCK_ID", unique = true, nullable = false)
    public Integer getStockId() {
        return this.stockId;
    }

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

    @Column(name = "STOCK_CODE", unique = true, nullable = false, length = 10)
    public String getStockCode() {
        return this.stockCode;
    }

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

    @Column(name = "STOCK_NAME", unique = true, nullable = false, length = 20)
    public String getStockName() {
        return this.stockName;
    }

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

}

7. Удалить существующий файл отображения Hibernate XML

Удалите существующий файл отображения Hibernate XML - «Stock.hbm.xml», это больше не требуется.

8. Обновить файл конфигурации Hibernate

Обновите файл конфигурации Hibernate - hibernate.cfg.xml.

Ранее у него был XML-файл отображения Hibernate с тегом «mapping resource»

Измените его на класс модели с тегом «класс отображения»

Файл: hibernate.cfg.xml




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

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

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

maven_hibernate_annotation_mysql

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

Запустите ваш App.java, он вставит новую запись в таблицу «Stock». Результат должен быть таким же, как и в предыдущем примере с файлом отображения Hibernate XML.

Maven + Hibernate + MySQL
...
Hibernate: insert into example.stock (STOCK_CODE, STOCK_NAME) values (?, ?)

Готово.

Related