多機能な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 Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

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