corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

Java Swing アプリケーションでの Hibernate の使用

このチュートリアルでは、NetBeans IDE を使用して、データベースからのデータを表示する Java Swing アプリケーションを作成し、配備します。このアプリケーションでは Hibernate フレームワークを持続性レイヤーとして使用し、リレーショナルデータベースから POJO (plain old Java objects) を取得します。

Hibernate は、ORM (object relational mapping) のためのツールを提供するフレームワークです。このチュートリアルでは、IDE に含まれる Hibernate フレームワークのサポートと、必要な Hibernate ファイルを作成するためのウィザードの使用方法を示します。Java オブジェクトを作成し、Hibernate を使用するようにアプリケーションを構成したあと、データを検索および表示する GUI インタフェースを作成します。

このチュートリアルで構築するアプリケーションは、DVD ストア Web アプリケーションの関係管理アプリケーションです。このチュートリアルでは、俳優のプロフィールを姓または名の一致に基づいてクエリーできるアプリケーションの作成方法を取り上げます。必要に応じて、映画の詳細のクエリー、項目の追加、更新、削除ができるように、アプリケーションを拡張することもできます。このチュートリアルでは、MySQL データベースと Sakila データベースを使用しますが、Hibernate アプリケーションでサポートされるデータベースサーバーであれば、どれでも使用できます。Sakila データベースは、MySQL のサイトからダウンロードできるサンプルデータベースです。Sakila DB の設定に関する情報は、次の節で説明します。

このチュートリアルを開始する前に、必要に応じて次のドキュメントをお読みください。

Maven を使用してこのアプリケーションを構築するには、「Hibernate を使用した Maven Swing アプリケーションの作成」を参照してください。

目次

このページの内容は NetBeans IDE 6.5 および 6.7 が対象です

このチュートリアルに従うには、次のソフトウェアとリソースが必要です。

ソフトウェアまたはリソース 必須バージョン
NetBeans IDE 6.7, 6.8, 6.9, 7.0, Java
Java Development Kit (JDK) version 6 または version 5
MySQL データベースサーバー version 5.x
Sakila データベース アップデートセンターから入手できるプラグイン

完了したプロジェクトの ZIP アーカイブはダウンロードできます。

データベースの作成

このチュートリアルでは、sakila という名前の MySQL データベースを使用します。IDE のインストールにはサンプルデータベースが含まれていないため、このチュートリアルを開始する前に、まずデータベースを作成する必要があります。

Sakila データベースは無料の MySQL サンプルデータベースで、MySQL のサイトから入手できます。sakila データベースを作成するには、プラグインマネージャーを使用して Sakila サンプルデータベースプラグインをダウンロードしてインストールできます。プラグインのインストール後、「サービス」ウィンドウから Sakila データベースを作成できます。Sakila データベースは、「MySQL データベースの作成」ダイアログのデータベース一覧に追加されます。

MySQL を操作するための IDE の構成については、「MySQL データベースへの接続」チュートリアルを参照してください。

  1. プラグインマネージャーを開き、Sakila サンプルデータベースプラグインをインストールします。
  2. プラグインをインストールしたあと、「サービス」ウィンドウで「データベース」ノードを展開し、「MySQL サーバー」ノードを右クリックして「起動」を選択して、MySQL データベースサーバーを起動します。
  3. 「MySQL サーバー」ノードを右クリックし、「データベースを作成」を選択します。
  4. 「MySQL データベースの作成」ダイアログで「新規データベース名」ドロップダウンリストから「Sakila データベース」を選択します。「了解」をクリックします。
    「MySQL データベースの作成」ダイアログのスクリーンショット

    「了解」をクリックすると、「MySQL サーバー」ノードの下に「Sakila」ノードが表示されます。

  5. 「Sakila」ノードを右クリックし、「接続」を選択します。

「接続」をクリックすると、「Sakila」データベースのデータベース接続のノード (jdbc:mysql://localhost:3306/sakila [デフォルトのユーザー名]) が「データベース」ノードに一覧表示されます。接続が開いたら、接続ノードを展開してデータベースのデータを確認できます。

Java Swing アプリケーションプロジェクトの作成

この課題では、DVDStoreAdmin という名前の簡単な Java Swing アプリケーションプロジェクトを作成します。

  1. 「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択します。「Java」カテゴリから「Java アプリケーション」を選択し、「次へ」をクリックします。
  2. プロジェクト名に「DVDStoreAdmin」と入力し、プロジェクトの場所を設定します。
  3. 専用フォルダを使用するオプションが選択されている場合は選択を解除します。
    このチュートリアルでは、ライブラリをほかのユーザーと共有する必要がないので、プロジェクトライブラリを専用のフォルダにコピーする理由はほとんどありません。
  4. 「主クラスを作成」の選択を解除します。「完了」をクリックします。

「完了」をクリックすると、IDE で Java アプリケーションプロジェクトが作成されます。このプロジェクトには主クラスが設定されていません。フォームを作成し、このフォームを主クラスとして設定します。

プロジェクトへの Hibernate サポートの追加

Hibernate サポートを J2SE プロジェクトに追加するには、Hibernate ライブラリをプロジェクトに追加する必要があります。Hibernate ライブラリは IDE に含まれており、「プロジェクト」ウィンドウで「ライブラリ」ノードを右クリックして「ライブラリを追加」を選択し、「ライブラリを追加」ダイアログで「Hibernate」ライブラリを選択することで、任意のプロジェクトに追加できます。

IDE には、プロジェクトに必要な Hibernate ファイルの作成に役立つウィザードが複数用意されています。IDE のウィザードを使用し、Hibernate 構成ファイルとユーティリティーヘルパークラスを作成できます。ウィザードを使用して Hibernate 構成ファイルを作成すると、自動的に Hibernate ライブラリがプロジェクトに追加されます。

Hibernate 構成ファイルの作成

Hibernate 構成ファイル (hibernate.cfg.xml) には、データベース接続、リソースマッピング、およびそのほかの接続プロパティーに関する情報が格納されます。ウィザードを使用して Hibernate 構成ファイルを作成する場合、IDE に登録されているデータベース接続のリストからデータベース接続を指定します。構成ファイルを生成すると、接続の詳細および選択したデータベース接続に基づくダイアレクト情報が自動的に追加されます。また、IDE は、プロジェクトのクラスパスに Hibernate ライブラリを自動的に追加します。構成ファイルの作成後、ファイルはマルチビューエディタを使用して編集するか、または XML エディタで直接 XML を編集できます。

  1. 「プロジェクト」ウィンドウで「ソースパッケージ」ノードを右クリックし、「新規」>「その他」を選択して「新規ファイル」ウィザードを開きます。
  2. 「Hibernate」カテゴリから「Hibernate 構成ウィザード」を選択します。「次へ」をクリックします。
  3. src ディレクトリにファイルを作成する場合は、「名前と場所」区画をデフォルト設定のままにします。「次へ」をクリックします。
  4. Sakila 接続を「データベース接続」ドロップダウンリストから選択します。「完了」をクリックします。
データベース接続の作成スクリーンショット

「完了」をクリックすると、ソースエディタで hibernate.cfg.xml が開きます。IDE では、アプリケーションのコンテキストクラスパスのルートに構成ファイルが作成されます (「ファイル」ウィンドウの WEB-INF/クラス)。「プロジェクト」ウィンドウで、ファイルは <デフォルトパッケージ> ソースパッケージに保存されます。構成ファイルには、単一のデータベースに関する情報が含まれます。複数のデータベースに接続する場合、複数の構成ファイルをプロジェクト内に作成できます。構成ファイルはデータベースサーバーごとに 1 つですが、デフォルトで、ヘルパーユーティリティークラスはルートの場所にある hibernate.cfg.xml ファイルを使用します。

「プロジェクト」ウィンドウの「ライブラリ」ノードを展開すると、必須の Hibernate JAR ファイルと MySQL コネクタ JAR が IDE によって追加されたことがわかります。

Hibernate ライブラリが表示された「プロジェクト」ウィンドウのスクリーンショット

Hibernate 構成ファイルの変更

この課題では、hibernate.cfg.xml で指定されたデフォルトプロパティーを、SQL 文のデバッグログ記録が有効になるように編集します。この課題は任意です。

  1. 「デザイン」タブで hibernate.cfg.xml を開きます。このファイルを開くには、「プロジェクト」ウィンドウでプロジェクトの「構成ファイル」ノードを展開し、hibernate.cfg.xml をダブルクリックします。
  2. 「Optional Properties」の下の「Configuration Properties」ノードを展開します。
  3. 「追加」をクリックして「Hibernate Property を追加」ダイアログを開きます。
  4. このダイアログで、「hibernate.show_sql」プロパティーを選択し、値を「true」に設定します。「了解」をクリックします。これにより、SQL 文のデバッグログ記録が有効になります。
    hibernate.show_sql プロパティーが表示されている「Hibernate Property を追加」ダイアログ

    エディタの「XML」タブをクリックすると、ファイルが XML ビューに表示されます。ファイルの内容は次のようになります。

    <hibernate-configuration>
        <session-factory name="session1">
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sakila</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password">######</property>
            <property name="hibernate.show_sql">true</property>
        </session-factory>
    </hibernate-configuration>
  5. 変更内容をファイルに保存します。

プロジェクトを実行すると、IDE の出力ウィンドウに SQL クエリーが表示されます。

HibernateUtil.java ヘルパーファイルの作成

Hibernate を使用するには、起動を処理し、Hibernate の SessionFactory にアクセスしてセッションオブジェクトを取得するヘルパークラスを作成する必要があります。このクラスは、Hibernate の configure() メソッドを呼び出し、hibernate.cfg.xml 構成ファイルを読み込み、次に SessionFactory を構築してセッションオブジェクトを取得します。

この節では、「新規ファイル」ウィザードを使用してヘルパークラスである HibernateUtil.java を作成します。

  1. 「ソースパッケージ」ノードを右クリックし、「新規」>「その他」を選択して「新規ファイル」ウィザードを開きます。
  2. 「カテゴリ」の一覧から「Hibernate」を選択し、「ファイルの種類」の一覧から「HibernateUtil.java」を選択します。「次へ」をクリックします。
  3. クラス名として「HibernateUtil」を入力し、パッケージ名として「sakila.util」を入力します。「完了」をクリックします。
HibernateUtil の作成方法を示す「新規ファイル」ウィザード

「完了」をクリックすると、HibernateUtil.java がエディタに表示されます。このファイルは、編集する必要がないため閉じて構いません。

Hibernate のマッピングファイルおよび Java クラスの生成

このチュートリアルでは、POJO (Plain Old Java Objects) である Actor.java を使用してデータベース内の ACTOR 表のデータを表示します。このクラスは、表内の列のフィールドを指定し、データを取得および書き込みするための単純な取得メソッドおよび設定メソッドを使用します。Actor.java を ACTOR 表にマップするには、Hibernate のマッピングファイルを使用するか、クラスの注釈を使用します。

「リバースエンジニアリング」ウィザードと「データベースからの Hibernate のマッピングファイルと POJO」ウィザードを使用して、選択するデータベース表に基づいて複数の POJO とマッピングファイルを作成できます。代わりに、IDE のウィザードを使用して個別の POJO とマッピングファイルを最初から作成することもできます。

注:

  • NetBeans IDE 6.5 を使用している場合は、「リバースエンジニアリング」ウィザードを使用して hibernate.reveng ファイルを作成する必要はありません。「データベースからの Hibernate のマッピングファイルと POJO」ウィザードで、リバースエンジニアリングファイルを作成し、データベース表を指定します。
  • 複数の表に対するファイルを作成する場合は、このウィザードを使用すると便利です。このチュートリアルでは、POJO を 1 つとマッピングファイルを 1 つ作成する必要があるだけなので、ファイルを個々に作成するほうがはるかに簡単です。POJO とマッピングファイルを個別に作成する手順については、このチュートリアルの最後に紹介します。

リバースエンジニアリングファイルの作成

リバースエンジニアリングファイル (hibernate.reveng.xml) は XML ファイルであり、hibernate.cfg.xml で指定したデータベースのメタデータから Hibernate ファイルを生成するときに使用されるデフォルト設定を変更するために使用できます。このウィザードは、基本的なデフォルト設定でファイルを生成します。このファイルを変更して、使用されるデータベーススキーマを明示的に指定したり、使用を禁止する表を除外したり、JDBC タイプと Hibernate タイプのマッピング関係を指定したりできます。

  1. 「ソースパッケージ」ノードを右クリックし、「新規」>「その他」を選択して「新規ファイル」ウィザードを開きます。
  2. 「カテゴリ」の一覧から「Hibernate」を選択し、「ファイルの種類」の一覧から「Hibernate リバースエンジニアリングウィザード」を選択します。「次へ」をクリックします。
  3. ファイル名に「hibernate.reveng」と入力します。
  4. 場所としてデフォルトの src をそのまま使用します。「次へ」をクリックします。
  5. 「使用可能な表」区画で actor を選択し、「追加」をクリックします。「完了」をクリックします。

このウィザードにより hibernate.reveng.xml リバースエンジニアリングファイルが生成されます。リバースエンジニアリングファイルは、編集する必要がないため閉じてかまいません。

データベースからの Hibernate のマッピングファイルと POJO の作成

「データベースからの Hibernate のマッピングファイルと POJO」ウィザードでデータベース内の表に基づいてファイルを生成します。ウィザードを使用すると、IDE により、hibernate.reveng.xml で指定されたデータベース表に基づいて POJO とマッピングファイルが生成され、マッピングエントリが hibernate.cfg.xml に追加されます。ウィザードを使用する場合、たとえば POJO のみにするなど、IDE で生成するファイルを選択でき、また、たとえば EJB 3 注釈を使用するコードの生成するなど、コード生成オプションを選択できます。

  1. 「プロジェクト」ウィンドウで「ソースパッケージ」ノードを右クリックし、「新規」>「その他」を選択して「新規ファイル」ウィザードを開きます。
  2. 「データベースからの Hibernate のマッピングファイルと POJO」を「Hibernate」カテゴリから選択します。「次へ」をクリックします。
  3. 選択されていない場合、hibernate.cfg.xml を「Hibernate 設定ファイル」ドロップダウンリストから選択します。
  4. 選択されていない場合、hibernate.reveng.xml を「Hibernate リバースエンジニアリングファイル」ドロップダウンリストから選択します。
  5. ドメインコード」および「Hibernate XML のマッピング」オプションが選択されていることを確認します。
  6. パッケージ名に「sakila.entity」と入力します。「完了」をクリックします。
「Hibernate のマッピングファイルおよび POJO の生成」ウィザード

「完了」をクリックすると、IDE で POJO である Actor.java がすべての必須のフィールドと一緒に生成され、Hibernate マッピングファイルが生成され、マッピングエントリが hibernate.cfg.xml に追加されます。

これで、POJO と必要な Hibernate 関連ファイルが準備できたので、アプリケーションの簡単な Java GUI フロントエンドを作成できます。また、データベースにクエリーを行なってデータを取得する HQL クエリーを作成し、追加できます。また、この過程で HQL エディタを使用してクエリーを構築およびテストします。

アプリケーション GUI の作成

この課題では、データを入力および表示するためのフィールドを含む、簡単な JFrame フォーム作成します。また、データを取得するためのデータベースクエリーをトリガーするボタンを追加します。

GUI ビルダーを使用したフォームを作成に習熟していない場合、「GUI 構築入門」チュートリアルを見直すことをお勧めします。

JFrame フォームの作成

  1. 「プロジェクト」ウィンドウでプロジェクトノードを右クリックし、「新規」>「その他」を選択して「新規ファイル」ウィザードを開きます。
  2. JFrame フォームを「Swing GUI フォーム」カテゴリから選択します。「次へ」をクリックします。
  3. クラス名に「DVDStoreAdmin」と入力し、パッケージ名に「sakila.ui」と入力します。「完了」をクリックします。

「完了」をクリックすると、IDE でクラスが作成され、JFrame フォームがエディタの「デザイン」ビューに開きます。

要素のフォームへの追加

次に、UI 要素をフォームに追加する必要があります。エディタの「デザイン」ビューにフォームが表示されると、IDE の左側に「パレット」が表示されます。要素をフォームに追加するには、要素をパレットからフォーム領域にドラッグします。要素をフォームに追加したあと、その要素の「変数名」プロパティーのデフォルト値を変更する必要があります。

  1. 「ラベル」要素をパレットからドラッグし、テキストを「俳優のプロフィール」に変更します。
  2. 「ラベル」要素をパレットからドラッグし、「」のテキストを変更します。
  3. 「テキストフィールド」要素を「名」ラベルの隣にドラッグし、デフォルトのテキストを削除します。
  4. 「ラベル」要素をパレットからドラッグし、「」のテキストを変更します。
  5. 「テキストフィールド」要素を「姓」ラベルの隣にドラッグし、デフォルトのテキストを削除します。
  6. 「ボタン」要素をパレットからドラッグし、テキストを「クエリー」に変更します。
  7. 「表」要素をパレットからフォームにドラッグします。
  8. 次の UI 要素の「変数名」の値を、次の表の値に従って変更します。

    要素の「変数名」の値は、その要素を「デザイン」ビューの中で右クリックし、「変数名を変更」を選択することで変更できます。または、「変数名」を「インスペクタ」ウィンドウで直接変更することもできます。

    「変数名」値を「ラベル」要素に割り当てる必要はありません。

    要素変数名
    「名」テキストフィールドfirstNameTextField
    「姓」テキストフィールドlastNameTextField
    「クエリー」ボタンqueryButton
    resultTable
  9. 変更を保存します。

デザインビューのフォームは、次の画像のような外観になります。

エディタの「デザイン」ビューにある GUI フォーム

これで、フォーム要素にイベントを割り当てるためのコードを作成するフォームが準備できました。次の課題では、Hibernate クエリー言語に基づいて、データを取得するクエリーを構築します。クエリーの構築後、「クエリー」ボタンを押したときに適切なクエリーを呼び出すメソッドをフォームに追加します。

HQL クエリーエディタでのクエリーの作成

IDE で、HQL クエリーエディタを使用して Hibernate クエリー言語 (HQL) に基づくクエリーを構築およびテストできます。クエリーを入力すると、それに相当する (変換された) SQL クエリーがエディタに表示されます。ツールバーの「HQL クエリーを実行」ボタンをクリックすると、IDE がクエリーを実行し、エディタ下部に結果が表示されます。

この課題では、HQL エディタを使用して、姓または名の一致に基づいて俳優の詳細リストを取得する、簡単な HQL クエリーを構築します。クエリーをクラスに追加する前に、HQL クエリーエディタを使用して、接続が正しく動作し、クエリーで目的の結果が生成されることをテストします。

  1. 「プロジェクト」ウィンドウで、<デフォルトパッケージ> ソースパッケージノードを展開します。
  2. hibernate.cfg.xml」を右クリックし、「HQL クエリーを実行」を選択して HQL クエリーエディタを開きます。
  3. HQL クエリーエディタに「from Actor」と入力して、接続をテストします。ツールバーの「HQL クエリーを実行」ボタン 「HQL クエリーを実行」ボタン) をクリックします。

    「HQL クエリーを実行」をクリックすると、クエリー結果が HQL クエリーエディタの下の区画に表示されるはずです。

    クエリー結果が表示された HQL クエリーエディタ

    結果の上にある「SQL」ボタンをクリックすると、次のような SQL クエリーが表示されるはずです。

    select actor0_.actor_id as col_0_0_ from sakila.actor actor0_
    SQL クエリーが表示された HQL クエリーエディタ
  4. 検索文字列が「PE」の場合、次のクエリーを HQL クエリーエディタに入力して「HQL クエリーを実行」をクリックし、クエリーの結果を確認します。
    from Actor a where a.firstName like 'PE%'

    クエリーによって名前が「PE」で始まる俳優の詳細リストが返されます。

  5. 新しい HQL クエリーエディタのタブを開き、次のクエリーをエディタ区画に入力します。「HQL クエリーを実行」をクリックします。
    from Actor a where a.lastName like 'MO%'

    クエリーによって姓が「MO」で始まる俳優の詳細リストが返されます。

クエリーのテストによって、そのクエリーが目的の結果を返すことがわかります。次の手順では、フォームで「クエリー」ボタンをクリックすると適切なクエリー呼び出されるように、クエリーをアプリケーションに実装します。

クエリーのフォームへの追加

DVDStoreAdmin.java を変更して、クエリー文字列を追加し、入力変数を組み込むクエリーを構築して呼び出すメソッドを作成する必要があります。また、ボタンイベントハンドラを変更して、正しいクエリーを呼び出し、クエリー結果を表に表示するメソッドを追加する必要があります。

  1. DVDStoreAdmin.java を開き、「ソース」タブをクリックします。
  2. このクラスに、次のクエリー文字列 (ボールド部分) を追加します。
    public DVDStoreAdmin() {
        initComponents();
    }
    
    private static String QUERY_BASED_ON_FIRST_NAME="from Actor a where a.firstName like '";
    private static String QUERY_BASED_ON_LAST_NAME="from Actor a where a.lastName like '";

    クエリーを HQL クエリーエディタのタブからファイルにコピーし、コードを変更できます。

  3. 次のメソッドを追加し、ユーザー入力文字列に基づくクエリーを作成します。
    private void runQueryBasedOnFirstName() {
        executeHQLQuery(QUERY_BASED_ON_FIRST_NAME + firstNameTextField.getText() + "%'");
    }
        
    private void runQueryBasedOnLastName() {
        executeHQLQuery(QUERY_BASED_ON_LAST_NAME + lastNameTextField.getText() + "%'");
    }

    このメソッドは、executeHQLQuery() というメソッドを呼び出し、クエリー文字列とユーザーが入力した検索文字列とを組み合わせてクエリーを作成します。

  4. executeHQLQuery() メソッドを追加します。
    private void executeHQLQuery(String hql) {
        try {
            Session session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            Query q = session.createQuery(hql);
            List resultList = q.list();
            displayResult(resultList);
            session.getTransaction().commit();
        } catch (HibernateException he) {
            he.printStackTrace();
        }
    }

    executeHQLQuery() メソッドは、Hibernate を呼び出して、選択したクエリーを実行します。このメソッドは、HibernateUtil.java ユーティリティークラスを使用して Hibernate セッションを取得します。

  5. Hibernate ライブラリ (org.hibernate.Queryorg.hibernate.Session) と java.util.List に対するインポート文を追加するように、インポートを修正します。
  6. デザインビューに切り替えて「クエリー」ボタンをダブルクリックすることで、「クエリー」ボタンイベントハンドラを作成します。

    IDE で queryButtonActionPerformed メソッドが作成され、このメソッドがソースビューに表示されます。

  7. ユーザーがボタンをクリックしたときにクエリーが実行されるよう、ソースビューの queryButtonActionPerformed メソッドに次のコードを追加して変更します。
    private void queryButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
        if(!firstNameTextField.getText().trim().equals("")) {
            runQueryBasedOnFirstName();
        } else if(!lastNameTextField.getText().trim().equals("")) {
            runQueryBasedOnLastName();
        }
    }
  8. 次のメソッドを追加し、結果が JTable に表示されるようにします。
    private void displayResult(List resultList) {
        Vector<String> tableHeaders = new Vector<String>();
        Vector tableData = new Vector();
        tableHeaders.add("ActorId"); 
        tableHeaders.add("FirstName");
        tableHeaders.add("LastName");
        tableHeaders.add("LastUpdated");
    
        for(Object o : resultList) {
            Actor actor = (Actor)o;
            Vector<Object> oneRow = new Vector<Object>();
            oneRow.add(actor.getActorId());
            oneRow.add(actor.getFirstName());
            oneRow.add(actor.getLastName());
            oneRow.add(actor.getLastUpdate());
            tableData.add(oneRow);
        }
        resultTable.setModel(new DefaultTableModel(tableData, tableHeaders));
    }
  9. java.util.Vector を追加するようにインポートを修正し、変更内容を保存します。

フォームの保存後、プロジェクトを実行できます。

プロジェクトの実行

これでコーディングが終了したので、アプリケーションを起動できます。プロジェクトを実行する前に、プロジェクトのプロパティーのダイアログでアプリケーションの主クラスを指定する必要があります。主クラスが指定されていない場合は、アプリケーションの初回起動時に主クラスを設定するよう求められます。

  1. 「プロジェクト」ウィンドウでプロジェクトのノードを右クリックし、「プロパティー」を選択します。
  2. 「プロジェクトプロパティー」ダイアログで「実行」カテゴリを選択します。
  3. 「主クラス」に「sakila.ui.DVDStoreAdmin」と入力します。「了解」をクリックします。

    または、「参照」ボタンをクリックし、ダイアログで主クラスを選択できます。

    「主クラスを参照」ダイアログの主クラス設定
  4. メインツールバーの「主プロジェクトを実行」をクリックし、アプリケーションを起動します。

検索文字列を「名」または「姓」テキストフィールドに入力し、「クエリー」をクリックして俳優を検索し、詳細を確認します。

結果が表示された DVDStoreAdmin アプリケーション

IDE の「出力」ウィンドウを見ると、表示された結果を取得した SQL クエリーを確認できます。

ソリューションプロジェクトのダウンロード

次の方法で、このチュートリアルにソリューションをプロジェクトとしてダウンロードできます。

  • 完了したプロジェクトの ZIP アーカイブをダウンロードします。
  • 次の手順を実行して、プロジェクトソースを Kenai からチェックアウトします。
    1. メインメニューから「チーム」>「Kenai」>「Kenai からソースを取得」を選択します。

      また、「Kenai プロジェクトを開く」を選択して Kenai ダッシュボードにプロジェクトを追加し、プロジェクトソースを取得することもできます。

    2. 「Kenai からソースを取得」ダイアログで「参照」をクリックして Kenai リポジトリを探し、「Kenai プロジェクトを参照」ダイアログを開きます。
    3. NetBeans IDE Samples Catalog を検索します。
    4. NetBeans IDE Samples Catalog を選択して「了解」をクリックします。
    5. 「参照」をクリックして「取得するフォルダ」を指定し、NB67/Java/DVDStoreAdmin-Ant を選択します。「閉じる」をクリックします。
    6. ソースのローカルフォルダを指定します。ローカルフォルダは空である必要があります。
    7. 「Kenai から取得」をクリックします。

      「Kenai から取得」をクリックすると、IDE はローカルフォルダを Subversion リポジトリとして初期化し、プロジェクトソースをチェックアウトします。

    8. チェックアウトが完了するときに表示されるダイアログで、「プロジェクトを開く」をクリックします。

    注: NetBeans IDE 6.7 が必要です。

個別の POJO およびマッピングファイルの作成

POJO は単純な Java クラスのため、新規「Java クラス」ウィザードを使用してクラスを作成し、そのクラスをソースエディタで編集して、必要なフィールドや取得メソッドおよび設定メソッドを追加できます。POJO の作成後、ウィザードを使用して Hibernate マッピングファイルを作成し、そのクラスを表にマップしてマッピング情報を hibernate.cfg.xml に追加します。マッピングファイルを最初から作成する場合、XML エディタでフィールドを列にマップする必要があります。

注: この課題は任意であり、「データベースからの Hibernate のマッピングファイルと POJO」ウィザードを使用して作成した POJO とマッピングファイルの作成方法を説明します。

  1. 「プロジェクト」ウィンドウの「ソースパッケージ」ノードを右クリックし、「新規」>「Java クラス」を選択して「新規 Java クラス」ウィザードを開きます。
  2. このウィザードで、クラス名に「Actor」と入力し、パッケージに「sakila.entity」と入力します。「完了」をクリックします。
  3. 次のボールドで表示されている変更をクラスに加え、シリアライズ可能なインタフェースを実装して、表の列のフィールドを追加します。
    public class Actor implements Serializable {
        private Short actorId;
        private String firstName;
        private String lastName;
        private Date lastUpdate;
    }
  4. フィールドに対する取得メソッドと設定メソッドは、挿入カーソルをソースエディタに置き、Alt-Insert キーを押して「取得メソッドおよび設定メソッド」を選択することで生成します。
  5. 「取得メソッドおよび設定メソッドの生成」ダイアログですべてのフィールドを選択し、「生成」をクリックします。
    「取得メソッドおよび設定メソッドの生成」ダイアログ

    「取得メソッドおよび設定メソッドの生成」ダイアログでは、キーボードの上矢印キーを使用して、選択した項目を Actor ノードまで移動してから、スペースバーを押して Actor 内のすべてのフィールドを選択できます。

  6. インポートを修正して変更内容を保存します。

表のための POJO の作成後、Actor.java の Hibernate マッピングファイルを作成します。

  1. 「プロジェクト」ウィンドウで「sakila.entity」ノードを右クリックし、「新規」>「その他」を選択して「新規ファイル」ウィザードを開きます。
  2. 「Hibernate」カテゴリの「Hibernate のマッピングファイル」を選択します。「次へ」をクリックします。
  3. 「ファイル名」に「Actor.hbm」と入力し、フォルダが「src/sakila/entity」であることを確認します。「次へ」をクリックします。
  4. 「マップするクラス」に「sakila.entity.Actor」と入力し、「データベース表」ドロップダウンリストから「actor」を選択します。「完了」をクリックします。
    「Hibernate のマッピングファイルの生成」ウィザード

    「完了」をクリックすると、Actor.hbm.xml Hibernate のマッピングファイルがソースエディタで開きます。また、IDE でマッピングリソースに対するエントリが hibernate.cfg.xml に自動的に追加されます。このエントリの詳細は、hibernate.cfg.xml のデザインビューで「マッピング」ノードを展開するか、または XML ビューで表示できます。XML ビューの mapping エントリは、次のようになります。

            <mapping resource="sakila/entity/Actor.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>
  5. 次のボールド部分の変更を Actor.hbm.xml に行なって、Actor.java のフィールドを ACTOR 表の列にマップします。
    <hibernate-mapping>
      <class name="sakila.entity.Actor" table="actor">
        <id name="actorId" type="java.lang.Short">
          <column name="actor_id"/>
          <generator class="identity"/>
        </id>
        <property name="firstName" type="string">
          <column length="45" name="first_name" not-null="true"/>
        </property>
        <property name="lastName" type="string">
          <column length="45" name="last_name" not-null="true"/>
        </property>
        <property name="lastUpdate" type="timestamp">
          <column length="19" name="last_update" not-null="true"/>
        </property>
      </class>
    </hibernate-mapping>

    エディタでコード補完を使用し、マッピングファイルの変更時に値を補うことができます。

    注: デフォルトでは、生成される class 要素には終了タグがあります。開始と終了の class 要素タグの間にプロパティー要素を追加する必要があるため、次のボールドの変更を加えます。変更後、class タグの間でコード補完を使用できます。

    <hibernate-mapping>
      <class name="sakila.entity.Actor" table="actor">
      </class>
    </hibernate-mapping>
  6. ツールバーの「XML の妥当性検査」ボタンをクリックし、変更内容を保存します。

POJO と Hibernate のマッピングファイルを個別に作成すると、アプリケーションをさらにカスタマイズするときに役立つ場合があります。


関連項目

Swing GUI アプリケーションの作成に関する追加情報は、次のチュートリアルを参照してください。