HIBERNATE リファレンスガイド

HIBERNATE リファレンスガイド

Hibernate - Relational Persistence for Idiomatic Java

Legal Notice

June, 2007


前書き
1. Hibernate の導入
1.1. 前書き
1.2. パート1 - 初めての Hibernate アプリケーション
1.2.1. 最初のクラス
1.2.2. マッピングファイル
1.2.3. Hibernate の設定
1.2.4. Ant によるビルド
1.2.5. スタートアップとヘルパ
1.2.6. オブジェクトのロードと格納
1.3. パート2 - 関連のマッピング
1.3.1. Person クラスのマッピング
1.3.2. 単方向 Set ベース関連
1.3.3. 関連を働かせる
1.3.4. 値のコレクション
1.3.5. 双方向関連
1.3.6. 双方向リンクの動作
1.4. パート3 - EventManager Web アプリケーション
1.4.1. 基本的な Servlet の記述
1.4.2. 処理と描画
1.4.3. デプロイとテスト
1.5. 要約
2. アーキテクチャ
2.1. 概観
2.2. インスタンスの状態
2.3. JMX との統合
2.4. JCA サポート
2.5. コンテキスト上のセッション
3. 設定
3.1. プログラム上の設定
3.2. SessionFactory を取得する
3.3. JDBC コネクション
3.4. オプション設定プロパティ
3.4.1. SQL 方言(Dialect)
3.4.2. 外部結合フェッチ
3.4.3. バイナリストリーム
3.4.4. ニ次キャッシュとクエリキャッシュ
3.4.5. クエリ言語の置き換え
3.4.6. Hibernate 統計
3.5. ロギング
3.6. NamingStrategy の実装
3.7. XML 設定ファイル
3.8. J2EE アプリケーションサーバーとの統合
3.8.1. トランザクション戦略設定
3.8.2. SessionFactory の JNDI への登録
3.8.3. JTA による現在のセッションコンテキストマネージメント
3.8.4. JMX デプロイメント
4. 永続クラス
4.1. 単純な POJO の例
4.1.1. 引数のないコンストラクタを実装する
4.1.2. 識別子プロパティを用意する(オプション)
4.1.3. final クラスにしない(オプション)
4.1.4. 永続フィールドに対するアクセサとミューテータを定義する(オプション)
4.2. 継承の実装
4.3. equals() と hashCode() の実装
4.4. 動的モデル
4.5. Tuplizer
5. 基本的な O/R マッピング
5.1. マッピング定義
5.1.1. Doctype
5.1.2. hibernate-mapping
5.1.3. class
5.1.4. id
5.1.5. composite-id
5.1.6. discriminator
5.1.7. version(オプション)
5.1.8. timestamp(オプション)
5.1.9. property
5.1.10. many-to-one
5.1.11. one-to-one
5.1.12. natural-id
5.1.13. component, dynamic-component
5.1.14. properties
5.1.15. subclass
5.1.16. joined-subclass
5.1.17. union-subclass
5.1.18. join
5.1.19. key
5.1.20. column と formula 要素
5.1.21. import
5.1.22. any
5.2. Hibernate の型
5.2.1. エンティティと値
5.2.2. 基本的な型
5.2.3. カスタム型
5.3. 1つのクラスに1つ以上のマッピング
5.4. バッククォートで囲んだ SQL 識別子
5.5. メタデータの代替手段
5.5.1. XDoclet マークアップの使用
5.5.2. JDK 5.0 アノテーションの使用
5.6. 生成プロパティ
5.7. 補助的なデータベースオブジェクト
6. コレクションのマッピング
6.1. コレクションの永続化
6.2. コレクションのマッピング
6.2.1. コレクションの外部キー
6.2.2. コレクションの要素
6.2.3. インデックス付きのコレクション
6.2.4. 値のコレクションと多対多関連
6.2.5. 一対多関連
6.3. 高度なコレクションマッピング
6.3.1. ソートされたコレクション
6.3.2. 双方向関連
6.3.3. インデックス付きコレクションと双方向関連
6.3.4. 3項関連
6.3.5. <idbag>の使用
6.4. コレクションの例
7. 関連マッピング
7.1. イントロダクション
7.2. 単方向関連
7.2.1. 多対一
7.2.2. 一対一
7.2.3. 一対多
7.3. 結合テーブルを使った単方向関連
7.3.1. 一対多
7.3.2. 多対一
7.3.3. 一対一
7.3.4. 多対多
7.4. 双方向関連
7.4.1. 一対多/多対一
7.4.2. 一対一
7.5. 結合テーブルを使った双方向関連
7.5.1. 一対多/多対一
7.5.2. 一対一
7.5.3. 多対多
7.6. より複雑な関連マッピング
8. コンポーネントのマッピング
8.1. 依存オブジェクト
8.2. 従属するオブジェクトのコレクション
8.3. Map のインデックスとしてのコンポーネント
8.4. 複合識別子としてのコンポーネント
8.5. 動的コンポーネント
9. 継承マッピング
9.1. 3つの戦略
9.1.1. クラス階層ごとのテーブル(table-per-class-hierarchy)
9.1.2. サブクラスごとのテーブル (table-per-subclass)
9.1.3. discriminator を用いた table-per-subclass
9.1.4. table-per-subclass と table-per-class-hierarchy の混合
9.1.5. 具象クラスごとのテーブル(table-per-concrete-class)
9.1.6. 暗黙的ポリモーフィズムを用いた table-per-concrete-class
9.1.7. 他の継承マッピングと暗黙的ポリモーフィズムの組み合わせ
9.2. 制限
10. オブジェクトを扱う
10.1. Hibernate におけるオブジェクトの状態
10.2. オブジェクトを永続状態にする
10.3. オブジェクトのロード
10.4. クエリ
10.4.1. クエリの実行
10.4.2. フィルタリングコレクション
10.4.3. クライテリアのクエリ
10.4.4. ネイティブ SQL のクエリ
10.5. 永続オブジェクトの修正
10.6. detached オブジェクトの修正
10.7. 自動的な状態検出
10.8. 永続オブジェクトの削除
10.9. 異なる二つのデータストア間でのオブジェクトのレプリケーション
10.10. セッションのフラッシュ
10.11. 連鎖的な永続化
10.12. メタデータの使用
11. トランザクションと並行性
11.1. session スコープと transaction スコープ
11.1.1. 作業単位(Unit of work)
11.1.2. 長い対話
11.1.3. オブジェクト識別子を考える
11.1.4. 一般的な問題
11.2. データベーストランザクション境界
11.2.1. 管理されていない環境
11.2.2. JTA を使用する
11.2.3. 例外ハンドリング
11.2.4. トランザクションのタイムアウト
11.3. 楽観的同時実行制御
11.3.1. アプリケーションによるバージョンチェック
11.3.2. 拡張セッションと自動バージョニング
11.3.3. デタッチされたオブジェクトと自動バージョニング
11.3.4. 自動バージョニングのカスタマイズ
11.4. 悲観的ロック
11.5. コネクション開放モード
12. インターセプタとイベント
12.1. インターセプタ
12.2. イベントシステム
12.3. Hibernate の宣言的なセキュリティ
13. バッチ処理
13.1. バッチ挿入
13.2. バッチ更新
13.3. StatelessSession インターフェース
13.4. DML スタイルの操作
14. HQL: Hibernate クエリ言語
14.1. 大文字と小文字の区別
14.2. from 節
14.3. 関連と結合
14.4. 結合構文の形式
14.5. 識別子プロパティの参照
14.6. Select 節
14.7. 集約関数
14.8. ポリモーフィックなクエリ
14.9. where 節
14.10. Expressions 式
14.11. order by 節
14.12. group by 節
14.13. 副問い合わせ
14.14. HQL の例
14.15. 大量の UPDATE と DELETE
14.16. Tips & Tricks
14.17. コンポーネント
14.18. 行値コンストラクタ構文
15. Criteria クエリ
15.1. Criteria インスタンスの作成
15.2. リザルトセットの絞込み
15.3. 結果の整列
15.4. 関連
15.5. 関連の動的フェッチ
15.6. クエリの例
15.7. 射影、集約、グループ化
15.8. クエリおよびサブクエリの分離
15.9. 自然識別子によるクエリ
16. ネイティブ SQL
16.1. SQLQuery の使用
16.1.1. スカラーのクエリ
16.1.2. エンティティのクエリ
16.1.3. 関連とコレクションの操作
16.1.4. 複数エンティティの取得
16.1.5. 管理されていないエンティティの取得
16.1.6. 継承の制御
16.1.7. パラメータ
16.2. 名前付き SQL クエリ
16.2.1. 列と列の別名を明示的に指定するために return-property を使う
16.2.2. 問い合わせするためにストアドプロシージャを使う
16.3. 作成、更新、削除のためのカスタム SQL
16.4. ロードのためのカスタム SQL
17. データのフィルタリング
17.1. Hibernate のフィルタ
18. XML マッピング
18.1. XML データでの作業
18.1.1. XML とクラスのマッピングを同時に指定する
18.1.2. XML マッピングだけを指定する
18.2. XML マッピングのメタデータ
18.3. XML データを扱う
19. パフォーマンスの改善
19.1. フェッチ戦略
19.1.1. 遅延関連の働き
19.1.2. フェッチ戦略のチューニング
19.1.3. 単一端関連プロキシ
19.1.4. コレクションとプロキシの初期化
19.1.5. バッチフェッチの使用
19.1.6. サブセレクトフェッチの使用
19.1.7. 遅延プロパティフェッチの使用
19.2. 第2レベルキャッシュ
19.2.1. キャッシュのマッピング
19.2.2. read only 戦略
19.2.3. read/write 戦略
19.2.4. 厳密ではない read/write 戦略
19.2.5. transactional 戦略
19.3. キャッシュの管理
19.4. クエリキャッシュ
19.5. コレクションのパフォーマンスの理解
19.5.1. 分類
19.5.2. 更新にもっとも効率的なコレクション list、map、idbag、set
19.5.3. inverse コレクションにもっとも最適な bag と list
19.5.4. 一括削除
19.6. パフォーマンスのモニタリング
19.6.1. SessionFactory のモニタリング
19.6.2. メトリクス
20. ツールセットガイド
20.1. スキーマの自動生成
20.1.1. スキーマのカスタマイズ
20.1.2. ツールの実行
20.1.3. プロパティ
20.1.4. Ant を使用する
20.1.5. インクリメンタルなスキーマ更新
20.1.6. インクリメンタルなスキーマ更新に対する Ant の使用
20.1.7. Schema validation
20.1.8. スキーマのバリデーションに Ant を使用します
21. 例: 親/子供
21.1. コレクションに関する注意
21.2. 双方向一対多
21.3. ライフサイクルのカスケード
21.4. カスケードと unsaved-value
21.5. 結論
22. 例: Weblog アプリケーション
22.1. 永続クラス
22.2. Hibernate のマッピング
22.3. Hibernate のコード
23. 例: いろいろなマッピング
23.1. 雇用者/従業員
23.2. 作者/作品
23.3. 顧客/注文/製品
23.4. 種々雑多なマッピング例
23.4.1. 「型付けされた」一対一関連
23.4.2. 複合キーの例
23.4.3. 複合キー属性を共有する多対多
23.4.4. discrimination に基づく内容
23.4.5. 代替キーの関連
24. ベストプラクティス
目次