マッピングツールと呼ばれる、リレーショナルデータベースとオブジェクトモデルとの間を埋めるフレームワークです。関連するテーブルのオブジェクトを管理する方法が、十数種類あります。サポートされる関係の一覧が載っています。非常に参考になります。マニュアルの中から、気になった部分や使えそうな部分だけを抜き出しておきます。リレーショナルデータベースのほとんどの関係を表現することが出来ます。その一部が下記のような関連です。(一対一)2つのオブジェクトが同一のIDを共有する場合。親子関係がこれにあたります。(一対多)オブジェクトのプロパティがコレクションの場合。独自のコレクション型が使用できます。似ていて、等価なものを一意に扱います。同じオブジェクトを2回以上登録できます。同じオブジェクトが何回登録されたかを管理できます。(多対多)双方向の関係で、多対一の関係の場合。両者のオブジェクトのプロパティに、相手のクラスのコレクションが保持されている状態。テーブル的には、同一のテーブルに格納される場合。同一の主キーをもつテーブルが個々のクラスに対して存在する。(コンポーネント)複数のクラスを一つのテーブルにマッピングする方法の一つ。(基本事項抜粋)HQLはクエリの大文字・小文字を区別しないただし、HQL中のオブジェクト参照(プロパティ)は大文字・小文字の区別をします。大文字・小文字の区別が必要です。パッケージを含めた完全クラス名を指定することもできます。指定した場合は、完全クラス名を指定する必要があります。複雑なものまで書けるので、それなりに使えるかも。文には、バインド変数を使うことが出来ます。ような、任意の名前を与える方法が使えます。使った場合には、インデックス順にバインド値を設定しなければなりません。オブジェクトを使って、任意の順番でバインドできます。クエリの本体をマッピング文書内に定義するクエリ文字列をJavaコードの外に定義することができます。CDATAセクションを使って定義します。&lt;/hibernate-mapping&gt;呼び出すには、プログラムから、クエリ名を指定すればよいです。形式で、ソースコード中に埋め込むのが良いような気がします。情報が入り込むのは、別のフレームワークを使おうとした場合に不利ではありますが、たぶんほとんどの場合そういうことはないはずです。定義すると、クラスとマッピングが同じ場所に存在することになるので、対応が分かりやすいというメリットがあります。保守はしやすいか・・・。形式でマッピングを書いた場合問題となるのが、生成されたマッピングファイルを手で修正していた場合に、もう一回ファイルを生成すると上書きされてしまうことです。マージファイルを使って、上手く上書きされることがないようにする必要があります。いうファイルを置いておきます。中身がそのままマージファイルとして所定の位置に埋め込まれます。して書けない静的なプロパティなどを、このファイルに書いておきます。補完が効くようなって便利です。タグには、主キー項目を指定します。解釈されるのか、エラーがでます。適切なマッピングを自動で探してくれるので、ほとんどの場合指定しなくていいようです。代入できる型にしておいた方がいいみたいです。オブジェクト型にしておくといいです。(デフォルトの動作)。テーブルの主キーとオブジェクトIDとを別々に考えるようです。候補キーというのは、エンティティを一意に識別する属性の、最小単位の集合のことです。なんかは、人を特定する候補キーになります。主キーは、候補キーから選ばれたデータベース上のレコードを一意に識別するキーのことです。候補キーから選ばれます。シーケンシャルな値でもかまいません。含まず、レコードが一意に識別できれさえすればいいのです。便宜的に使うキーなのです。格納された段階で決まります。メソッドを使って外部結合を行うには明示的にHQL文を書く必要があるみたいです。提供してもらうようにします。一般的に行われる処理です。行うという方法をとることがあります。でてしまうことがあるからです。使うと、Webに依存したテストになってしまうから)。テストできるようになります。なっているのが原因かもしれません。クラスをインスタンス化できない場合にスローされます。パッケージプライベート、protected、publicのいずれかに変更します。なく、データベース設計にまで触れられていておすすめ。G-Tools薄いながらも十分な情報量。HibernateとSpringにも触れられています。基本的な使い方が載っています。解説書が日本語で登場しました。Web系の方が強いですがスマホアプリもできます。Webサービス開発やスマホアプリ開発案件あればお声がけください。