Hibernate データの検索

2008/08/21 20:54Update
TAGS: Hibernate | 検索 | 条件 | HQL | SQL | Criteria

Hibernate では、データの検索を簡単に行うために、様々な工夫をしています。

本文は、実際のサンプルからHibernateでのデータの検索方法について学びます。
◇ データの全件を取得する
◇ Criteriaで指定する条件でデータを取得する
◇ HQLで指定する条件でデータを取得する
◇ SQLで指定する条件でデータを取得する


次のサンプルはHibernateでのデータ検索方法について簡単に説明していますが、詳細は Hibernate クエリ をご参照ください。

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Expression;

/*
* AppSuperDao: 親DAOクラス(定義の解説略)
* UserMstDao:テーブル USER_MSTを操作するクラス
*/
public class UserMstDao extends AppSuperDao {
    /**
     * セッションを取得する(共通化すべきであるメソッド)
     * @return Session
     */
    private Session getSession() {
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session s = sessionFactory.openSession();
    
        return s;
    }
    
    //データ検索
    
    /**
     * UserMstデータ検索(全件取得)
     * @return USER_MSTの全件データ。
     */
    public List <UserMst> getList() {
        return getSession().createCriteria(UserMst.class).list();
    }
    
    /**
     * Criteriaより指定条件で合致するユーザのリストを取得する
     * @param name ユーザ名
     * @return 合致するユーザのリスト
     */
    public List <UserMst> getListByName(String name) {
        Criteria criteria = getSession().createCriteria(UserMst.class);
        
        criteria.add(Expression.eq("name", name));
        
        return criteria.list();
    }
    
    /**
     * HQL文より指定条件で合致するユーザのリストを取得する
     * @param name ユーザ名
     * @return 合致するユーザのリスト
     */
    public List <UserMst> getListByNameHql(String name) {
        //HQL文
        String hql = "FROM UserMst u WHERE u.name = :name";
        Query query = getSession().createQuery(hql);

        //条件        
        query.setString("name", name);
        
        //クエリ発行
        return query.list();
    }
    
    /**
     * SQL文より指定条件で合致するユーザのリストを取得する
     * @param name ユーザ名
     * @return 合致するユーザのリスト
     */
    public List <UserMst> getListByNameSql(String name) {
        //HQL文
        String sql = "FROM USER_MST u WHERE u.NAME = :name";
        Query query = getSession().createSQLQuery(sql);

        //条件        
        query.setString("name", name);
        
        //クエリ発行
        return query.list();
    }
}

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments