Hibernate 2章 Hibernate を使ってみよう
- 2.1. Hibernate とは
- 2.2. データベーススキーマの準備
- 2.3. Hibernate 設定ファイルの準備
- 2.4. マッピングファイルの準備
- 2.5. 永続化クラスの準備
- 2.6. Dao の準備
- 2.7. データの投入
- 2.8. まとめ
2.5 永続化クラスの準備
O/R マッピングの O[オー] のためのクラスを準備します。今回のサンプルでは、
/** * Book.java * TECHSCORE Java Hibernate 2章 * Copyright (c) 2005 Four-Dimensional Data, Inc. */ package com.techscore.hibernate; /** * 「本」を表す POJO。 */ public class Book { private String isbn = null; private String name = null; private int price = -1; /** * @return isbn を戻します。 */ public String getIsbn() { return isbn; } /** * @param isbn * isbn を設定。 */ public void setIsbn(String isbn) { this.isbn = isbn; } /** * @return name を戻します。 */ public String getName() { return name; } /** * @param name * name を設定。 */ public void setName(String name) { this.name = name; } /** * @return price を戻します。 */ public int getPrice() { return price; } /** * @param price * price を設定。 */ public void setPrice(int price) { this.price = price; } }
永続化クラスは、ご覧の通りいたって普通の JavaBean です。
2.6 Dao の準備
本プロジェクトでは、データの永続化、取り出しを行うことを目的とした Dao を作成することにします。
まずは、Dao をサポートする抽象クラス DaoSupport クラスを作成しましょう。DaoSupport クラスは
セッションを取得するためのgetSession
メソッドのみを実装することにします。
/**
* DaoSupport.java * TECHSCORE Java Hibernate 2章
* Copyright (c) 2005 Four-Dimensional Data, Inc.
*/
package com.techscore.hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
* Dao を補助するクラス
*/
public abstract class DaoSupport {
protected Session getSession()
{
Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
return session;
}
}
getSession
メソッドは、org.hibernate.Session クラスのインスタンス
を返します。まずはそのままコピーして利用してください。
次に、DaoSupport クラスを継承する BookDao クラスを作成します。BookDao クラスでは、
Book クラスのインスタンスを引数で受け取り、受け取った Book クラスのインスタンスを
永続化する save メソッドを実装します。
/** * BookDao.java * TECHSCORE Java Hibernate 2章 * Copyright (c) 2005 Four-Dimensional Data, Inc. */ package com.techscore.hibernate; import org.hibernate.Session; import org.hibernate.Transaction; /** * Book を扱う Dao */ public class BookDao extends DaoSupport { public void save(Book book) {Session session = getSession();
Transaction transaction = session.beginTransaction();
session.save(book);
transaction.commit(); session.close();
} }
save メソッドでは、15行目
で、セッションの取得を行い、16行目
でトランザクションを開始しています。その後、18行目
で、引数で渡された book オブジェクト
を永続化しています。永続化するためのコードはこれだけです。SQL文の構築、PreparedStatement 等への値のセット等
のソースは、全てこの一行に集約されています。
そして、20から21行目
で、コミットやセッションのクローズを行っています。