開発者ドキュメント

Maven 2 Hibernate 3.2 MySQLの例(注釈)

このチュートリアルでは、以前のリンク//hibernate/quick-start-maven-hibernate-mysql-example/[Maven 2 Hibernate 3.2 MySQLの例(XMLマッピング)]を変更し、Hibernate XMLマッピングファイルを注釈コードに置き換えます。

ツール

  1. Maven 2.2.1

  2. JDK 1.6.0__13

  3. Hibernate 3.2.3.GA

  4. MySQL 5.0

1.プロジェクトインフラストラクチャを作成する

2. JBossリポジトリを追加する

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

 <repositories>
    <repository>
      <id>JBoss repository</id>
      <url>http://repository.jboss.com/maven2/</url>
    </repository>
  </repositories>

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

`pom.xml`にhibernate-annotationsとhibernate-commons-annotations依存関係を追加します。

    <dependency>
        <groupId>hibernate-annotations</groupId>
        <artifactId>hibernate-annotations</artifactId>
        <version>3.3.0.GA</version>
    </dependency>

    <dependency>
        <groupId>hibernate-commons-annotations</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>3.0.0.GA</version>
    </dependency>


File:pom.xml

<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/maven-v4__0__0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mkyong.common</groupId>
  <artifactId>HibernateExample</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>HibernateExample</name>
  <url>http://maven.apache.org</url>

  <repositories>
    <repository>
      <id>JBoss repository</id>
      <url>http://repository.jboss.com/maven2/</url>
    </repository>
  </repositories>

  <dependencies>

    <!-- MySQL database driver -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.9</version>
    </dependency>

    <!-- Hibernate core -->
    <dependency>
        <groupId>hibernate</groupId>
        <artifactId>hibernate3</artifactId>
        <version>3.2.3.GA</version>
    </dependency>

    <!-- Hibernate annotation -->
    <dependency>
        <groupId>hibernate-annotations</groupId>
        <artifactId>hibernate-annotations</artifactId>
        <version>3.3.0.GA</version>
    </dependency>

    <dependency>
        <groupId>hibernate-commons-annotations</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>3.0.0.GA</version>
    </dependency>

    <!-- Hibernate library dependecy start -->
    <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>
    <!-- Hibernate library dependecy end -->

    <dependency>
        <groupId>javax.transaction</groupId>
        <artifactId>jta</artifactId>
        <version>1.1</version>
    </dependency>

  </dependencies>
</project>

4.プロジェクトのクラスパスを更新する

issue “” mvn eclipse:eclipse` “をコマンドプロンプトで開き、依存関係ライブラリをダウンロードし、Eclipseのプロジェクトクラスパスを更新します。

5. HibernateUtil.javaを更新する

Hibernateセッションファクトリを構築するために ”

Configuration

“の代わりに ”

AnnotationConfiguration

“を使用するように “HibernateUtil”を更新してください。

以前は “Configuration”を使用しています – Hibernate XMLマッピングファイル

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

それを “AnnotationConfiguration”に変更する – ハイバネーションアノテーションのサポート

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


File:HibernateUtil.java

package com.mkyong.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.mkyong.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 = "mkyong", 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を更新します。

これまでは、 “mapping resource”タグを持つHibernate XMLマッピングファイルがありました

<mapping resource="com/mkyong/common/Stock.hbm.xml"></mapping>

「マッピングクラス」タグでモデルクラスに変更する

<mapping class="com.mkyong.common.Stock"></mapping>


File: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">password</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mkyong</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="show__sql">true</property>
        <mapping class="com.mkyong.common.Stock"></mapping>
    </session-factory>
</hibernate-configuration>

9.プロジェクトの構造を見直す

いくつかのファイルが修正されたようなサウンドは、それを見直してフォルダー構造が次のようになっていることを確認してください:



10.それを実行して、出力を見る

App.javaを実行すると、 “Stock”テーブルに新しいレコードが挿入されます。結果は、以前のHibernate XMLマッピングファイルの例と同じにする必要があります。

Maven + Hibernate + MySQL
...

Hibernate:mkyong.stock(STOCK__CODE、STOCK__NAME)の値(?、?)に挿入します。

完了しました。

それをダウンロードする –
リンク://wp-content/uploads/2009/12/Maven

Hibernate

annotation

MySQL

Example.zip[Maven-Hibernate-annotation-MySQL-Example.zip](8KB)

モバイルバージョンを終了