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行目で、コミットやセッションのクローズを行っています。

