7.埋め込み式


JPAのデータ型分類
値のタイプ
  • int、Integer、Stringなど値のみのニザワ基本タイプまたは対象
  • 識別子なし、変更を追跡できない
  • エンティティタイプ
  • 「エンティティ」と定義されたオブジェクト
  • データが変化しても識別子として追跡できる
  • 埋め込み
  • 複合値タイプ
  • JPAは組み込みタイプと呼ぶ
  • 主にデフォルトタイプを組み合わせたもの
  • 似たような性格の価格タイプを組み合わせたもの
  • テーブルマッピング
  • imbeddyタイプはエンティティの値のみ
  • imbeddyタイプ使用前後の表が同じ
  • 設計されたORMアプリケーションのクラス数がマッピングされたテーブル数よりも多い
  • 使用
  • @Embeddable:定義値タイプの箇所に表示
  • @Embedded:使用値タイプの箇所に表示
  • 基本ジェネレータは必須
  • エンティティ内で繰り返す
  • 同じ値タイプを1つのエンティティで使用した場合、どうすればいいですか?
  • e.g)
    private Address home
    private Address work
  • @AttributeOverrides@AttrbitueOverrideカラム名属性を再定義できます.
  • side-effect
  • 同じ埋め込みオブジェクトを共有すると、問題が発生する可能性があります.
  • 変更時に共有オブジェクトのすべてのエンティティの値が変更された
  • コピー値使用
  • 対象タイプを変更できない方法により、副作用をソースから遮断することができる.
  • 値タイプは불변 객체
  • 作成者設定値のみを使用して、修正者またはプライベート修正者は作成しない
  • 必要であれば缶引きで作る
  • 共有するには、エンティティに共有する必要がある
    // 의도적으로 같은 Address를 넣는 경우
    Address address = new Address("Seoul");
    
    member1.setAddress(address);
    member2.setAddress(address);
  • 値タイプではなく、最初から意図的に共有するエンティティとして作成する必要がある
  • コレクション
    imbeddyタイプを集合に管理したい場合があるかもしれません.
    e.g) FavoriteFood
    このような状況は一対多の関連関係によって実現されるだろう.
    ソース
  • この記事は参考Java ORM標準JPAプログラミング-基本編作成.