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データベースに挿入します。
この記事で使用したツールとテクノロジー:
-
メーベン2.2.1
-
JDK 1.6.0_13
-
Hibernate 3.2.3.GA
-
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... ... 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」の下にリソースフォルダーを作成します。後ですべてのHibernateのxmlファイルがここに配置されます。 Mavenはこのフォルダー内のすべてのファイルをリソースファイルとして扱い、それを出力クラスに自動的にコピーします。
6. プロジェクト構造を確認する
次のようにフォルダ構造を確認してください
MavenはすべてのJavaの標準フォルダー構造を生成します(リソースフォルダーのほか、クイックスタートアーキタイプ#15にはリソースフォルダーが含まれていません)
7. HibernateとMySQLの依存関係を追加する
Mavenのpom.xml
ファイルを変更し、HibernateとMySQLのサポートを追加します。 Hibernateには、dom4j、commons-logging、commons-collections、および依存ライブラリとしての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に設定すると、Hibernate SQLステートメントが出力されます。 Hibernate Dialectは、データベースと通信するために生成する必要があるSQLをHibernateアプリケーションに伝えています。 他のデータベース方言–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. プロジェクト構造を再度確認する
多くの新しいファイルとフォルダーを作成し、確認して、フォルダー構造が次のようになっていることを確認してください
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)