Hibernate フィルタによるデータ抽出
2009/06/11 14:56Update
Hibernate フィルタによるデータの抽出方法について。
Hibernateフィルタの使い方
1)フィルタを定義
Hibernateフィルタを利用するのに、Hibernateの定義ファイルにそのフィルタを定義する必要があります。
例:
<hibernate-mapping> <filter-def name="myFilter"> <filter-param name="myFilterParam" type="string"/> </filter-def> </hibernate-mapping>
※<hibernate-mapping>要素内に、<filter-def/>を定義します。
※<filter-def>要素はフィルタを定義します。nameはフィルタの名前を指定します。
※<filter-param>要素はフィルタのパラメータを定義します。nameはパラメータの名前で、typeはパラメータの型になります。
2)フィルタとクラスやコレクションの結びつき
クラスの場合。例:
<class name="MyClass" ...> ... <filter name="myFilter" condition=":myFilterParam = MY_FILTERED_COLUMN"/> </class>
コレクションの場合。例:
<set name="mySet" ...> <filter name="myFilter" condition=":myFilterParam = MY_FILTERED_COLUMN"/> </set>
※<filter>要素は利用したいフィルタを記述します。
※<filter>要素のnameにフィルタの名前を指定します。
※<filter>要素のconditionにSQL文のWHERE句に相当するフィルタの条件を指定します。
「:myFilterParam」:myFilterParamは<filter-def>による定義済みのフィルタのパラメータ名です。
「MY_FILTERED_COLUMN」:テーブルのフィールド名
3)Hibernateクエリによるフィルタリング
Hibernate 3.xから、org.hibernate.Filterというインタフェースが追加され、セッション処理関連のorg.hibernate.Sessionインタフェースにも以下のようなフィルタ関連のメソッドが追加されました。
Filter enableFilter(String filterName)
void disableFilter(String filterName)
Filter getEnabledFilter(String filterName)
デフォルトでは、フィルタが定義されても反映されないので、フィルタを有効にするために、Sessionの
Filter enableFilter(String filterName)
メソッドによる明示的なコールが必要です。
例:
//①フィルタの有効化・フィルタ条件の設定
session.enableFilter("myFilter").setParameter("myFilterParam", "some-value");
//②通常のクエリ処理
//クエリによるデータ取得
List results = session.createQuery("...").list();
//データ取得
MyClass myClass = session.get(MyClass.class, id);
Set myClassSet = myClass.getMySet(); //フィルタリングされた後のコレクションになります
参考資料
org.hibernate.Filterインタフェース API doc
org.hibernate.Session インタフェース API doc
Sponsored Link
- Relative Articles
- Hibernate設定ファイルその1 - hibernate.cfg.xml - (2008/07/09 14:08)
- Hibernate c3p0 - よく利用されているコネクションプーリング - (2008/07/09 15:00)
- Hibernate 方言(Dialect)一覧 - (2008/07/09 15:10)
- Hibernate のSessionとSessionFactory - (2008/07/09 15:51)
- ThreadLocal でHibernate Session を効率的に管理する - (2008/07/09 18:43)
- Hibernateで複数のDBに接続するには? - (2008/07/09 18:47)
- Hibernateとは - (2008/07/11 14:23)
- Hibernate のインストール - (2008/07/24 11:01)
- Hibernate の開発手順 - (2008/07/24 12:44)
- Hibernate SQLをログに出力方法 - (2008/07/30 16:06)