1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Hibernate ORM 5.3.9.Final User Guide を読むためのメモ

Posted at

この記事の内容

この記事はHibernateの公式ドキュメント内容を解説するものではありません
これから読み始める人、読んだことはあるけど確認しようと思ったらどこに記述があったか忘れた、というような場合を想定したドキュメントを読むためのメモです。
全体的にJPAの仕様とHibernateの独自拡張が区別しにくいので注意が必要です。

2.Domain Model

2.3 Basic Types

2.3.1. Hibernate-provided BasicTypes

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#basic-provided
HibernateとJava、JDBC、マッピングに使用されるHibernate内部のマップのキーの一覧表。
テーブルのカラムの型が思いがけないものにならないように注意。
Javaの新しい時間型の対応も要チェック。

2.3.5. Explicit BasicTypes

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#basic-type-annotation
特定のDB側の型に解決させるため指示のアノテーション。
Javaの型としてはStringだけどDB上では違う型の時は積極的に指定した方がよさそう。

2.3.15. Mapping Date/Time Values

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#basic-datetime
時間系統の値について

To avoid dependencies on the java.sql package, it’s common to use the java.util or java.time Date/Time classes instead.

せっかく管理してくれるのでjava.sqlの型を使わないようにしましょう。

2.3.16. JPA 2.1 AttributeConverters

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#basic-jpa-convert
オブジェクト上のデータをDBのカラムへ移すときにデータの変換が必要な場合の対処方法。
この辺りはどのレイヤーに機能を実装するか難しい。

2.3.18. Generated properties

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#mapping-generated
データベース側で生成される値を取り込むためのアノテーション。
DBの厳密なタイムスタンプや自動生成のプライマリキーをエンティティで使用するときのもの。
計算結果を書き込んだ際の読み戻しなどにも使えるけど実用性はあるかな…。

2.4. Embeddable types

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#embeddables
組み込み型を使う時。テーブルに決まった組み合わせのカラムを作る時には便利かも。
座標とか曜日セットとか。

2.5. Entity types

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#entity
Hibernateの山場。
JPAに規定されたAPI仕様とHibernateに実装された機能の間に差があるため、移植性を考える時などには注意が必要。

2.5.7. Implementing equals() and hashCode()

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#mapping-model-pojo-equalshashcode
次の節と絡めて重要。そもそもオブジェクトの同一性って扱いが難しい。

2.6. Identifiers

エンティティの識別方法について。Javaのオブジェクトの仕様と含めていろいろと考えるところが多そう。

2.6.2. Composite identifiers

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#identifiers-composite
ここから数節、複合キー的なものの扱いについて。

2.6.9. Using IDENTITY columns

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#identifiers-generators-identity
DB側が生成するキーを使用する場合について。

2.7. Associations

エンティティ同士の関係性について。いわゆるリレーションシップの設定周り。

2.7.2. @OneToMany

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#associations-one-to-many
大部分のリレーションで重要になる1対多について。
JavaオブジェクトとDBの構造的な差から、単方向の関連性を使うことはあまりないかも。
Bidirectional @OneToManyが必読。

2.7.4. @ManyToMany

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#associations-many-to-many
気軽に@ManyToManyだけを使うと大変なことになります。

2.8. Collections

コレクションの管理方法について。組み込み型も関係してくるので随時2.4節も参照。

2.8.3. Collections of entities

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#collections-entity
エンティティの関係性をJavaオブジェクトで表現するときにどうするかの説明。
これ以降の節は非常に重要なので一通り読んでおくことをお勧めします。

2.9. Natural Ids

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#naturalid
ナチュラルID、JANコードやISBNコードなど、モデルに含まれるシステム外から来る識別子について。Hibernateの固有機能のようなので移植を考えるときは注意。

3. Bootstrap

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#bootstrap
Hibernateの起動方法、オプション設定など。
Spring Bootなどに頼らずにコーディングする際や設定の内容の確認に。

4. Schema generation

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#schema-generation
スキーマ、テーブルの自動生成について。思った形で生成されていないときに。

5. Persistence Context

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#pc
永続性コンテキストについて。保存されない、読み込まれないといったときはここの処理が何かしら間違っているはず。

以下随時追加予定…
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?