第6回:多機能なHibernate(後編) (2/4)

O/Rマッピングツール
徹底比較!! O/Rマッピングツール

第6回:多機能なHibernate(後編)
著者:ビーブレイクシステムズ  山之内 弘行   2006/8/28
前のページ  1  2   3  4  次のページ
設定ファイルの適用

   各種設定が終了したら「Exporters」タブを選択します。

   ここでは生成するファイルを選択します。今回は、DTO/マッピング・ファイル/Hibernate設定ファイルを選択します。生成したいファイルを選択したら「実行」ボタンを押します。
Hibernateファイル生成画面(Exporters)
図5:Hibernateファイル生成画面(Exporters)

   「実行」ボタンを押すとファイルの保存先と同様のフォルダにDTOとマッピング・ファイルが作成されています。

   また、Hibernate設定ファイルの内容が更新されます。

DAOの作成

   次にDAOを作成します。DAOもHibernate Toolsによって自動生成できます。

   また、Hibernate Toolsとは別のEclipseプラグインとして「Hibernate Synchronizer」という自動生成ツールも存在します。Hibernate SynchronizerはマッピングファイルからDAOパターンやGeneration Gapパターンを利用したコードを生成することができます。

Hibernate SynchronizerのWebサイト
http://sourceforge.net/projects/hibernatesynch/

   なお、今回は説明もかねますので手動で作成します。

   まずは、ShainDaoクラスです。

DAOクラス(ShainDao.java)
package hibernate;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
public class ShainDao {

   private Session session = null;

   public ShainDao(Session session) {
      this.session = session;
   }

   public List findShainByHQL() {
      Query query = session.createQuery("from hibernate.Shain");
      return query.list();         
   }

   public List findShainByCriteria() {
      Criteria criteria = session.createCriteria(Shain.class);
      return criteria.list();      
   }

}

   このクラスでは、検索処理に1の「HQL」と2の「Criteria」を使用しています。「HQL」とはHibernateで用意されている簡易検索言語です。また、Torqueと同じように「Criteria」を使用して検索処理を行うことも可能です。なお、1と2の検索結果は同じです。

   続いて、BushoDaoクラスです。

DAOクラス(BushoDao.java)
package hibernate;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

public class BushoDao {

   private Session session = null;

   public BushoDao(Session session) {
      this.session = session;
   }
   
   public List findBusho() {
      Query query = session.createQuery("from hibernate.Busho");
      return query.list();
   }

   public void saveBusho(Busho busho) {
      session.save(busho);      
   }

   public void deleteBusho(Busho busho) {
      session.delete(busho);
   }

}

   このクラスでは挿入処理にsave()メソッドを使用しています。

   save()メソッドはTorqueでも使用しましたが、Torqueと異なる点は、Torqueはデータオブジェクト自身のsave()メソッドを呼び出していましたが、HibernateではSessionオブジェクトのsave()メソッドを呼び出します。

   Sessionオブジェクトのsave()メソッドを呼び出すことによって、オブジェクトをHiberntateのSessionに関連付けることができます。save()メソッドの呼び出しによって、オブジェクトの状態が一時オブジェクトから永続オブジェクトへと状態が遷移します。

前のページ  1  2   3  4  次のページ


株式会社ビーブレイクシステムズ 山之内 弘行氏
著者プロフィール
株式会社ビーブレイクシステムズ  山之内 弘行
Javaスペシャリスト
前職ではJavaを用いたシステム開発をメインに作業を行う。更なるキャリアアップを目指し、実力次第で上流工程に携われるビーブレイクシステムズに転職。現在はJavaアーキテクトとして活躍中。


INDEX
第6回:多機能なHibernate(後編)
  はじめに
設定ファイルの適用
  テスト用実行クラスの作成
  実行結果
徹底比較!! O/Rマッピングツール
第1回 O/Rマッピングとは?
第2回 SQLを直接記述できるiBATIS(前編)
第3回 SQLを直接記述できるiBATIS(後編)
第4回 SQLを記述しない「Torque」
第5回 多機能なHibernate(前編)
第6回 多機能なHibernate(後編)
第7回 それぞれのメリット/デメリット

人気記事トップ10

人気記事ランキングをもっと見る