Maven 2 Hibernate 3.2 MySQLの例(注釈)

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)を変更し、HibernateXMLマッピングファイルを注釈コードに置き換えます。

この記事で使用したツールとテクノロジー:

  1. メーベン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リポジトリを追加する

Hibernateアノテーションライブラリをダウンロードするには、pom.xmlのJBossリポジトリが必要です。

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

3. Hibernateアノテーションの依存関係を追加する

pom.xmlにhibernate -notおよびhibernate-commons -not依存関係を追加します。

    
        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を更新します

Configuration」の代わりに「AnnotationConfiguration」を使用するように「HibernateUtil」を更新して、Hibernateセッションファクトリを構築します。

以前は「構成」を使用しています-Hibernate XMLマッピングファイル用

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を更新します。

以前は、「マッピングリソース」タグのあるHibernate XMLマッピングファイルがありました。

「マッピングクラス」タグを使用してモデルクラスに変更します

ファイル: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 (?, ?)

完了しました。

ダウンロード–Maven-Hibernate-annotation-MySQL-Example.zip(8KB)