PR

多機能なHibernate(後編)

2006年8月28日(月)
山之内 弘行

設定ファイルの適用


   各種設定が終了したら「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()メソッドの呼び出しによって、オブジェクトの状態が一時オブジェクトから永続オブジェクトへと状態が遷移します。

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

連載バックナンバー

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています