第2回 HibernateとCaché、Javaとの好相性はどっちだ
ネクストデザイン
村山 徹
2006/1/13
ステップ3 テーブルを作成する
RDBMS上のテーブルは、Hibernateに含まれるツール(schemaexport)によって自動的に作成されます注3。schemaexportは、CaObject.hbm.xmlなどの定義情報を基に、指定されたRDBMS上にテーブルを作成します。
注3:schemaexport用のプロパティファイル(hibernate.properties)が必要です。
また、データベースの作成(CREATE DATABASE)は事前に必要です。今回使用したRDBMS(Firebird)の場合、
としておく必要があります。 |
ステップ4 アプリケーションコードを書く
CaObjectのインスタンスを1つ生成し、それを永続化するコードを作成します(リスト4)。
Configuration config = new Configuration(); (1) |
リスト4 CaObjectのインスタンスを永続化するコード |
ステップ5 実行する
リスト4のコードが実行されると、以下の処理が行われます。
(1)(2) | hibernate.propertiesが読み込まれる(クラスパス上に存在する場合のみ) |
(3)(4) | hibernate.cfg.xml が読み込まれる |
(5) | トランザクションが開始される |
(6) | CaObjectのインスタンスが生成される |
(7) | 属性nameが設定される |
(8) | ID(主キー)が決定される |
(9) | トランザクションがコミットされる(INSERT文、UPDATE文が発行される) |
(10) | セッションが終了される |
これで永続化できました。ここまで、テーブル名やSQL文を意識する必要はありませんでした。また、リスト4のコードは、永続化しない場合のコード(第1回のリスト1)に対して、接続やトランザクションに必要なコードを追加しただけです。これらの点からも、HibernateはO/Rマッピングツールとしてよく洗練されたツールだといえます。
ところで、接続やトランザクションを除けばリスト3やリスト4の中には、RDBMSを想像させるようなコードは見当たりません。Hibernateは、JavaリフレクションとCGLIBによって実行時(3)(4)にCaObjectクラスを拡張し、この拡張されたクラスとSessionオブジェクト(PersistenceManager)、Transactionオブジェクトなどが協調することで、実際の永続化(SQL文の生成と発行など)を行います。(6)(7)(8)でSQL文が生成され、(9)で実際に実行されることになります。
Hibernateの場合、CaObjectが永続化のための特別なインターフェイスを実装する必要や、特別なクラスを継承する必要はありません。また、後述するCachéのようにCaObjectクラスのソースコードを自動生成することもありません。Hibernateは、CGLIBによって実行時にクラス(リスト3)を拡張し、その拡張されたクラスが永続化のための責務を遂行します(CGLIBの詳細についてはほかの情報源を参照してください)。(次ページへ続く)
2/3 |
Index | |
対決! O/Rマッパー vs. オブジェクト指向DB(2) HibernateとCaché、Javaとの好相性はどっちだ |
|
Page
1 ・はじめに ・Hibernateを使ったJavaオブジェクトの永続化 ステップ1 ドメインモデルを作成する ステップ2 永続クラスとマッピング情報を作成する |
|
Page 2 ステップ3 テーブルを作成する ステップ4 アプリケーションコードを書く ステップ5 実行する |
|
Page 3 ・Cachéを使ったJavaオブジェクトの永続化 ステップ1 ドメインモデルを作成する ステップ2 永続クラスを定義する ステップ3 テーブルを作成する ステップ4 アプリケーションコードを書く ステップ5 実行する |
対決! O/Rマッパー vs. オブジェクト指向DB |
- Oracleライセンス「SE2」検証 CPUスレッド数制限はどんな仕組みで制御されるのか (2017/7/26)
データベース管理システムの運用でトラブルが発生したらどうするか。DBサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle SE2の「CPUスレッド数制限」がどんな仕組みで行われるのかを検証します - ドメイン参加後、SQL Serverが起動しなくなった (2017/7/24)
本連載では、「SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「ドメイン参加後にSQL Serverが起動しなくなった場合の対処方法」を解説します - さらに高度なSQL実行計画の取得」のために理解しておくべきこと (2017/7/21)
日本オラクルのデータベーススペシャリストが「DBAがすぐ実践できる即効テクニック」を紹介する本連載。今回は「より高度なSQL実行計画を取得するために、理解しておいてほしいこと」を解説します - データベースセキュリティが「各種ガイドライン」に記載され始めている事実 (2017/7/20)
本連載では、「データベースセキュリティに必要な対策」を学び、DBMSでの「具体的な実装方法」や「Tips」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
|
|