開発者ドキュメント

Maven 2 + Hibernate 3.2 + MySQLの例(XMLマッピング)

このクイックガイドでは、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を選択してクイックスタートのMavenのJavaプロジェクトを作成し、プロジェクトの情報(groupId、artifactId、package)を入力します。

E:\workspace>mvn archetype:generate[INFO]Scanning for projects...
...

番号を選択してください:
(1/2/3 ....)15:15
...
groupId :: com.mkyong.commonの値を定義する
artifactId :: HibernateExampleの値を定義する
バージョン1.0の値を定義する -  SNAPSHOT ::
パッケージの値を定義する:com.mkyong.common :: com.mkyong.common[情報]dirで作成されたOldArchetype:E:\ workspace \ HibernateExample[情報]----------------------------------------------- -------------------------[情報]成功したビルド[情報]----------------------------------------------- -------------------------

3. Eclipseプロジェクトに変換する

新しく生成されたプロジェクトをEclipseのスタイルプロジェクトに変換する “mvn eclipse:eclipse`

4.変換したプロジェクトをEclipse IDEにインポートする

Eclipse IDEで、ファイル – >インポート – >一般フォルダ、既存のプロジェクトをワークスペース – >プロジェクトフォルダの場所を選択します。完了

5.リソースフォルダを作成する



src/main

“フォルダ、 ”

/src/main/resources

“の下にresourcesフォルダを作成し、後で全てのHibernateのxmlファイルをここに置きます。 Mavenはこのフォルダ内のすべてのファイルをリソースファイルとして扱い、出力クラスに自動的にコピーします。

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

フォルダ構造が次のようになっていることを確認してください



MavenはあなたのためにすべてのJavaの標準フォルダ構造を生成します(リソースフォルダの横に、クイックスタートアーキタイプ#15にはresourcesフォルダがありません)

7. HibernateとMySQLの依存関係を追加する

Mavenの `pom.xml`ファイルを修正し、HibernateとMySQLのサポートを追加します。

Hibernateは、dom4j、commons-logging、commons-collections、およびcglibが依存関係ライブラリとして必要です。

ファイル:pom.xml

<project ...>
<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>
  <dependencies>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

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

    <!-- Hibernate framework -->
    <dependency>
        <groupId>hibernate</groupId>
        <artifactId>hibernate3</artifactId>
        <version>3.2.3.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>

“mvn eclipse:eclipse`を発行すると、MavenはすべてのHibernateとMySQLライブラリを自動的にダウンロードし、Mavenのローカルリポジトリに入れます。同時に、Mavenは依存関係のために、ダウンロードしたライブラリをEclipse ”

.classpath

“に追加します。もう一度:)、ライブラリを見つけてそれを自分でコピーする必要はありません。

8. Hibernate MappingファイルのModelクラスを作成する

前提条件として、 “stock”という名前のテーブルが作成されました。これで、Hibernate XMLマッピングファイルとモデルクラスを作成する必要があります。

`Stock.hbm.xml`ファイルを作成し、「

src/main/resources/com/mkyong/common/Stock.hbm.xml

」に入れてください。存在しない場合は “resources/com/mkyong/common/”フォルダを作成してください。


File:Stock.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.mkyong.common.Stock" table="stock" catalog="mkyong">
        <id name="stockId" type="java.lang.Integer">
            <column name="STOCK__ID"/>
            <generator class="identity"/>
        </id>
        <property name="stockCode" type="string">
            <column name="STOCK__CODE" length="10" not-null="true" unique="true"/>
        </property>
        <property name="stockName" type="string">
            <column name="STOCK__NAME" length="20" not-null="true" unique="true"/>
        </property>
    </class>
</hibernate-mapping>

Stock.javaファイルを作成し、 ”

src/main/java/com/mkyong/common/Stock.java

“に入れます。


File:Stock.java

package com.mkyong.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ツール

9. Hibernate設定ファイルを作成する

Hibernateの設定ファイルを作成し、リソースのルートフォルダ ”

src/main/resources/hibernate.cfg.xml

“の下に置きます。それに応じてMySQL設定を入力します。


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 resource="com/mkyong/common/Stock.hbm.xml"></mapping>
    </session-factory>
</hibernate-configuration>

“show__sql”プロパティをtrueに設定すると、Hibernate SQL文が出力されます。 Hibernate Dialectはあなたのデータベースと話すためにどのSQLを生成しなければならないかをHibernateアプリケーションに伝えています。他のデータベースのdialect –

Hibernate dialect collection

についてはこの記事を参照してください。

10. Hibernate Utilityクラスを作成する

Hibernateの起動と世話を容易にするために、HibernateUtil.javaクラスを作成します。永続性フォルダを作成し、このファイルを ”

src/main/java/com/mkyong/persistence/HibernateUtil.java

“に入れます。


File:HibernateUtil.java

package com.mkyong.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.プロジェクト構造をもう一度見直す

多くの新しいファイルやフォルダを作成するように聞こえたら、それを確認して、フォルダ構造が次のようになっていることを確認してください



12.レコードを保存するようにコード化する

次のように、デフォルトのApp.javaクラスを変更します。

ファイル:App.java

package com.mkyong.common;

import org.hibernate.Session;
import com.mkyong.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
...

2009年12月17日5時5分26秒org.hibernate.impl.SessionFactoryObjectFactory addInstance
INFO:工場をJNDIにバインドしていない、JNDI名を設定していない
Hibernate:mkyong.stock(STOCK__CODE、STOCK__NAME)の値(?、?)に挿入します。

完了しました。

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

Hibernate

MySQL

Example.zip[Maven

Hibernate

MySQL

Example.zip](12kb)

===リファレンス

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