目次へ

2.7 データの投入

やっと、Hibernate の動作を確認する時がきました。思えば長い道のりでした。 com.techscore.hibernate.BookSaverSample クラスを作成してください。BookSaverSample クラス では、BookDao を利用して Book オブジェクトを永続化します。

/** 
 * BookSaverSample.java * TECHSCORE Java Hibernate 2章 
 *
 * Copyright (c) 2005 Four-Dimensional Data, Inc. 
 */
package com.techscore.hibernate;
/**
 * Book オブジェクトを永続化するサンプル
 */
public class BookSaverSample {
    public static void main(String args[]) {
        BookDao bookDao = new BookDao();

        Book book = new Book();
        book.setIsbn("ISBN4-7561-4340-7");
        book.setName("ゼロから始めるJava 増補改訂版");
        book.setPrice(1905);
        bookDao.save(book);

        Book book2 = new Book();
        book2.setIsbn("ISBN4-7561-4383-0");
        book2.setName("ゼロから始めるJSP/サーブレット");
        book2.setPrice(2095);
        bookDao.save(book2);

    }
}
	

12行目で、BookDao インスタンスを生成しています。 14潤オ17行目、20潤オ23行目で、生成した2つの Book クラスのインスタンスを18行目、24行目でそれぞれ永続化しています。
では、早速(?かなり手間がかかりましたが)実行してみましょう。


・・・・・・・・
2005/08/03 12:24:46 org.hibernate.tool.hbm2ddl.TableMetadata <init>
情報: indexes: [book_pkey]
2005/08/03 12:24:46 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
情報: schema update complete
2005/08/03 12:24:46 org.hibernate.connection.DriverManagerConnectionProvider close
情報: cleaning up connection pool: jdbc:postgresql://localhost:5432/hibernate_master
2005/08/03 12:24:46 org.hibernate.impl.SessionFactoryImpl checkNamedQueries
情報: Checking 0 named queries
Hibernate: insert into BOOK (name, price, ISBN) values (?, ?, ?)
	

以上のように出力されたら成功です。データベースにアクセスして、データが投入されていることを確認しましょう。
本来必要となるはずの、INSERT 文がソースコードから消え去り、 いたってシンプルな記述になっているのがわかると思います。

あらかじめ記述しておいた、Book.hbm.xml によって、Hibernate は、Book オブジェクトと、 リレーショナルデータベースのレコードの関係を既に知っており、「この Book オブジェクト を登録してください。」といういたってシンプルなメッセージで、全てを理解してくれるのです。
かなり便利になるのが体感できてきたと思います。

2.8 まとめ

この章では、Book クラスのインスタンスを永続化するためのアプリケーションを構築しました。
Hibernate が 設定ファイルとマッピングファイルを元に、 Book クラスのインスタンスを永続化する手続きを行ってくれているのが理解できたと思います。 これまで必要としていた、SQL 文の構築や、PreparedStatement への値のセット、SQLの発行 手続き等の作業は、実行時に Hibernate が全てやってくれるため、ソースコードからこれらの 手続きをなくすことができました。
以下に、この章で作成した設定ファイルとソースファイルをまとめておきます。

ファイル位置備考
hibernate.cfg.xmlroad_to_hbm_master/src/
  • DBへの接続設定
  • マッピングファイルの指定
Book.hbm.xmlroad_to_hbm_master/src/com/techscore/hibernate
  • Book クラスとBook テーブルのマッピング
Book.java road_to_hbm_master/src/com/techscore/hibernate
  • 「本」を表す POJO
DaoSupport.java road_to_hbm_master/src/com/techscore/hibernate
  • Dao をサポートする抽象クラス
BookDao.java road_to_hbm_master/src/com/techscore/hibernate
  • Book クラスを扱う Data Access Object クラス
BookSaveSample.java road_to_hbm_master/src/com/techscore/hibernate
  • BookDao を利用して Book オブジェクトを永続化させるクラス

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp