目次へ

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

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp