ITエンジニアぽむのブログ

IT系で気になったことを書き留めておく備忘録です。仕事でよく使っているJavaと自宅で使っているLinuxについて書いていこうと思っています。同じお悩みをお持ちの方のお役に立てたら嬉しいです。

テーブルを全検索するDAOを作ってみよう!

まえがき

セッションファクトリーを使って、データベースに格納されているデータにアクセスする、DAOをご紹介したいと思います。

セッションファクトリーを取得する方法については、リンクを載せておきますので、よかったら参考にして下さいね。

pom2019.hatenablog.com

作成するDAOは、データベースに格納されているテーブル内のデータを全検索しようというものです。

DAOとは、Data Access Objectsの略でデータ操作をまとめたプログラムのことです。

開発環境

開発環境は下記の通りです。

Struts22.5.14.1
Hibernate4.3.0.Final
MySQL8.0.16

DAOの作成

DAO作成の手順は、下記の通りになります。

  1. セッションファクトリーの設定
    コンストラクタの引数にセッションファクトリーを指定して、DAO内でセッションファクトリーを使用できるようにしています。
  2. セッションのオープン
    1.で取得したセッションファクトリーを使って、セッションをオープンしています。
  3. クエリの実行
    HQLを使い、HouseholdAppliancesテーブルを全検索しています。ここで指定しているHouseholdAppliancesは、エンティティ名です。


実装例は、下記の通りになります。

package com.pom2019.Struts2Web.entities.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import com.pom2019.Struts2Web.entities.HouseholdAppliances;

public class HouseholdAppliancesDao {

    private SessionFactory sf;

    public HouseholdAppliancesDao() {
        super();
    }

    public HouseholdAppliancesDao(SessionFactory sf) {
        super();
        this.sf = sf;
    }

    @SuppressWarnings("unchecked")
    public List<HouseholdAppliances> findAll() {
        Session ss = sf.openSession();
        return ss.createQuery("from HouseholdAppliances").list();
    }
}

DAOの呼び出し

DAOクラスのインスタンス化とDAOを呼び出してリストを取得する処理は、下記の通りになります。

SessionFactory sf = (SessionFactory) context.getAttribute(HibernateListener.KEY_NAME);
        
HouseholdAppliancesDao hDao = new HouseholdAppliancesDao(sf);
List<HouseholdAppliances> hList = hDao.findAll();
setList(hList);

あとがき

DAOという形でデータ操作に関する処理をまとめれば、メンテナンス性が上がり後から処理の追加や変更が簡単に行なえます。

今回は、テーブルを全検索する方法について説明しましたが、プライマリーキーや特定のカラムでの検索、ソーティング、HQLでないSQLでのデータ取得などDAOで行うメソッドを追加すれば、拡張することができます。

もちろん、データの登録、更新、削除といったデータベース操作もDAOに追加することができます。

最後までお読み頂きありがとうございました。