はじめに
セッションファクトリーを使って、データベースに格納されているデータにアクセスする、DAOをご紹介したいと思います。
セッションファクトリーを取得する方法については、リンクを載せておきますので、よかったら参考にして下さいね。
作成するDAOは、データベースに格納されているテーブル内のデータを全検索しようというものです。
DAOとは、Data Access Objectsの略でデータ操作をまとめたプログラムのことです。
開発環境
開発環境は下記の通りです。
Struts2 | 2.5.14.1 |
Hibernate | 4.3.0.Final |
MySQL | 8.0.16 |
DAOの作成
DAO作成の手順は、下記の通りになります。
- セッションファクトリーの設定
コンストラクタの引数にセッションファクトリーを指定して、DAO内でセッションファクトリーを使用できるようにしています。 - セッションのオープン
1.で取得したセッションファクトリーを使って、セッションをオープンしています。 - クエリの実行
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に追加することができます。
最後までお読み頂きありがとうございました。
コメントを残す