SlideShare ist ein Scribd-Unternehmen logo
1 von 30
JPA 説明会その1 O/R マッピングの基本概念 および静的マッピング
業務システムにおける データアクセス層の重要性 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
さまざまなデータアクセス手法 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
O/R マッピングアプローチが 適するケースと適さないケース ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
O/R マッピング手法自体の分類 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Active Record パターン ,[object Object],[object Object],[object Object],[object Object],エンティティが自分で DB に対して永続ロジックを実行する
Data Mapper パターン ,[object Object],[object Object],[object Object],[object Object]
動的マッピングと透過的永続性 ,[object Object],[object Object],[object Object],[object Object]
さまざまな永続化手法のまとめ ,[object Object],[object Object],SQL 中心 O/R マッピング 静的構造マッピングのみ 完全 O/R マッピング 永続化手法 Hibernate 、 Toplink 、 Open JPA など JPA 対応の FW 、 JDO EJB CMP も思想は異なるが一応このカテゴリ S2DAO 、 iBatis 、 Ruby on Rails の Active Record など JDBC
JPA とは ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Hibernate とその他の プロバイダの比較(参考) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
JPA プロジェクトの ディレクトリ構造と設定ファイル ,[object Object],[object Object],[object Object],DB 接続やトランザクションなど永続ユニットに対する設定を記述(必須) エンティティとテーブルとのマッピングメタデータを記述 (すべてアノテーション利用なら不要)
エンティティとテーブルとの 基本的なマッピング ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
永続フィールド・プロパティ ,[object Object],[object Object],[object Object],[object Object]
単純なエンティティ定義の例 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],POJO にアノテーションをつけるだけで自動的にテーブルにマッピングされる! Emp loyee .Java EMPLOYEE テーブル 33 Ryo Asai 1 27 Daisaku Kato 2 AGE NAME ID
単純にマップ可能な型について ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Enum 型のマッピング ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
日付型のマッピング ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
デフォルト名以外での テーブル名、カラム名の指定方法 ,[object Object],[object Object],[object Object],[object Object],[object Object]
テーブル名、カラム名の指定例 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],@Table 、 @Column などのアノテーションはエンティティの論理構造ではなく、物理的なテーブル上のマッピングをカスタマイズするために使用する。 後で出てくる @ JoinTable,  @ JoinColumn などを含めて 最後に Table か Column が付くアノテーションはたいてい物理マッピングに使用する と覚えておくと良い。 Emp loyee .Java EMP テーブル 33 Ryo Asai 1 27 Daisaku Kato 2 AGE NAME EMP_ID
エンティティ同士の関連のマッピング ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
POJO による関連の表現 ,[object Object],[object Object],[object Object],[object Object],[object Object]
最も基本的な関連マッピング: 「一方向多対1」 CUSTOMER テーブル BRANCH テーブル @Entity public class Customer {  @Id private  Long  id; @ManyToOne private Branch branch; … }   @Entity public class Branch {  @Id private Long id; … }   外部キー列を使って関連先テーブルの主キー列と関連付ける 外部キー列の名前はデフォルトで「関連先エンティティ名 _ 主キー名」となる 1 2 2 1 2 3 BRANCH_ID ID 2 1 ID
外部キー列の名前を明示的に指定したい場合 CUSTOMER テーブル BRANCH テーブル @Entity public class Customer {  @Id private  Long  id; @ManyToOne @JoinColumn(name=“BRANCH_CODE”) private Branch branch; … }   @Entity public class Branch {  @Id private Long id; … }   @JoinColumn を使って外部キー列名を指定する 1 2 2 1 2 3 BRANCH_CODE ID 2 1 ID
関連を双方向にするには @Entity public class Customer {  @Id private  Long  id; @ManyToOne private Branch branch; … }   @Entity public class Branch {  @Id private Long id; @OneToMany(mappedBy=“branch”) Set<Customer> customers … }   CUSTOMER テーブル BRANCH テーブル テーブル上は単方向の場合と区別がない!! 関連の方向性というのは OO モデルにのみ存在する概念で、もともとテーブルモデル上は存在しない。 1 2 2 1 2 3 BRANCH_ID ID 2 1 ID
@ OneToMeny における mappedBy の意味について ,[object Object],[object Object],[object Object],[object Object],[object Object]
関連の所有側と反対側 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
双方向関連のベストプラクティス ⇒追加、削除ヘルパーメソッド ,[object Object],@Entity public class Branch {  … @OneToMany(mappedBy=“branch”) private  Set<Customer> customers public void addCustomer(Customer customer)  { customers.add(customer); customer.setBranch(this); } public void  remove Customer(Customer customer)  { customers.remove(customer); customer.setBranch(null); } }   所有側の関連を忘れずに更新すること
その他の関連のマッピングの概要 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OO モデルと関連モデルとの 静的インピーダンスミスマッチ ,[object Object],[object Object],[object Object],[object Object],[object Object]

Weitere ähnliche Inhalte

Was ist angesagt?

社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPIAkihiro Ikezoe
 
S2dao Seminar in tripodworks
S2dao Seminar in tripodworksS2dao Seminar in tripodworks
S2dao Seminar in tripodworkstripodworks
 
Java8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみるJava8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみるShinya Mochida
 
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Norito Agetsuma
 
SAStruts Seminar In Tripodworks
SAStruts Seminar In TripodworksSAStruts Seminar In Tripodworks
SAStruts Seminar In Tripodworkstripodworks
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐkwatch
 
Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_studyBeginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_studyToshiaki Maki
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2Masatoshi Tada
 
20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatchJun Inose
 
Beginning Java EE 6 勉強会(4) #bje_study
Beginning Java EE 6 勉強会(4) #bje_studyBeginning Java EE 6 勉強会(4) #bje_study
Beginning Java EE 6 勉強会(4) #bje_studyGeorge Okada
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」Hiroyuki Ohnaka
 
Java EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallJava EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallMasatoshi Tada
 
JSR 352 “Batch Applications for the Java Platform”
JSR 352 “Batch Applications for the Java Platform”JSR 352 “Batch Applications for the Java Platform”
JSR 352 “Batch Applications for the Java Platform”Norito Agetsuma
 
Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpJava EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpNorito Agetsuma
 
Java EE 7技術アップデート & 逆引き JSF 2.2
Java EE 7技術アップデート & 逆引き JSF 2.2 Java EE 7技術アップデート & 逆引き JSF 2.2
Java EE 7技術アップデート & 逆引き JSF 2.2 Hirofumi Iwasaki
 
Beginning Java EE 6 勉強会(6) #bje_study
Beginning Java EE 6 勉強会(6) #bje_studyBeginning Java EE 6 勉強会(6) #bje_study
Beginning Java EE 6 勉強会(6) #bje_studyMasato Kawamura
 
前回のCasual Talkでいただいたご要望に対する進捗状況
前回のCasual Talkでいただいたご要望に対する進捗状況前回のCasual Talkでいただいたご要望に対する進捗状況
前回のCasual Talkでいただいたご要望に対する進捗状況JubatusOfficial
 
RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。Tetsuya Hasegawa
 

Was ist angesagt? (20)

社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
 
S2dao Seminar in tripodworks
S2dao Seminar in tripodworksS2dao Seminar in tripodworks
S2dao Seminar in tripodworks
 
Java8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみるJava8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみる
 
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015
 
SAStruts Seminar In Tripodworks
SAStruts Seminar In TripodworksSAStruts Seminar In Tripodworks
SAStruts Seminar In Tripodworks
 
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐO/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
 
Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_studyBeginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_study
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
 
Java8勉強会
Java8勉強会Java8勉強会
Java8勉強会
 
20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch
 
Beginning Java EE 6 勉強会(4) #bje_study
Beginning Java EE 6 勉強会(4) #bje_studyBeginning Java EE 6 勉強会(4) #bje_study
Beginning Java EE 6 勉強会(4) #bje_study
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
 
Java EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallJava EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 Fall
 
JSR 352 “Batch Applications for the Java Platform”
JSR 352 “Batch Applications for the Java Platform”JSR 352 “Batch Applications for the Java Platform”
JSR 352 “Batch Applications for the Java Platform”
 
Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpJava EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jp
 
Java EE 7技術アップデート & 逆引き JSF 2.2
Java EE 7技術アップデート & 逆引き JSF 2.2 Java EE 7技術アップデート & 逆引き JSF 2.2
Java EE 7技術アップデート & 逆引き JSF 2.2
 
Spring3.1概要x di
Spring3.1概要x diSpring3.1概要x di
Spring3.1概要x di
 
Beginning Java EE 6 勉強会(6) #bje_study
Beginning Java EE 6 勉強会(6) #bje_studyBeginning Java EE 6 勉強会(6) #bje_study
Beginning Java EE 6 勉強会(6) #bje_study
 
前回のCasual Talkでいただいたご要望に対する進捗状況
前回のCasual Talkでいただいたご要望に対する進捗状況前回のCasual Talkでいただいたご要望に対する進捗状況
前回のCasual Talkでいただいたご要望に対する進捗状況
 
RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。
 

Ähnlich wie JPA説明会

Oracle Cloud Infrastructure Data Science 技術資料(20200402)
Oracle Cloud Infrastructure Data Science 技術資料(20200402)Oracle Cloud Infrastructure Data Science 技術資料(20200402)
Oracle Cloud Infrastructure Data Science 技術資料(20200402)オラクルエンジニア通信
 
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥Insight Technology, Inc.
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortemtamtam180
 
Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010stomita
 
Springでdao 20070413
Springでdao 20070413Springでdao 20070413
Springでdao 20070413Funato Takashi
 
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama [D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama Insight Technology, Inc.
 
Spring2概論@第1回JSUG勉強会
Spring2概論@第1回JSUG勉強会Spring2概論@第1回JSUG勉強会
Spring2概論@第1回JSUG勉強会Mitsuhiro Okamoto
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計Tadayoshi Sato
 
MySQL最新情報
MySQL最新情報MySQL最新情報
MySQL最新情報yoyamasaki
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624Yusuke Suzuki
 
20091030cakephphandson 02
20091030cakephphandson 0220091030cakephphandson 02
20091030cakephphandson 02Yusuke Ando
 
メタデータスキーマレジストリ MetaBridge
メタデータスキーマレジストリ MetaBridgeメタデータスキーマレジストリ MetaBridge
メタデータスキーマレジストリ MetaBridgeMitsuharu Nagamori
 
160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大openrtm
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November増田 亨
 
jBOLT Ver3.2
jBOLT Ver3.2jBOLT Ver3.2
jBOLT Ver3.2skudoh
 
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki OhasiInsight Technology, Inc.
 

Ähnlich wie JPA説明会 (20)

Oracle Cloud Infrastructure Data Science 技術資料(20200402)
Oracle Cloud Infrastructure Data Science 技術資料(20200402)Oracle Cloud Infrastructure Data Science 技術資料(20200402)
Oracle Cloud Infrastructure Data Science 技術資料(20200402)
 
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortem
 
超高速な機械学習を Oracle Database で実現!
超高速な機械学習を Oracle Database で実現!超高速な機械学習を Oracle Database で実現!
超高速な機械学習を Oracle Database で実現!
 
Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010
 
Datomic&datalog紹介
Datomic&datalog紹介Datomic&datalog紹介
Datomic&datalog紹介
 
Springでdao 20070413
Springでdao 20070413Springでdao 20070413
Springでdao 20070413
 
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama [D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
 
Spring2概論@第1回JSUG勉強会
Spring2概論@第1回JSUG勉強会Spring2概論@第1回JSUG勉強会
Spring2概論@第1回JSUG勉強会
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
 
MySQL最新情報
MySQL最新情報MySQL最新情報
MySQL最新情報
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
20091030cakephphandson 02
20091030cakephphandson 0220091030cakephphandson 02
20091030cakephphandson 02
 
Cubby 2006-08-23
Cubby 2006-08-23Cubby 2006-08-23
Cubby 2006-08-23
 
メタデータスキーマレジストリ MetaBridge
メタデータスキーマレジストリ MetaBridgeメタデータスキーマレジストリ MetaBridge
メタデータスキーマレジストリ MetaBridge
 
160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November
 
jBOLT Ver3.2
jBOLT Ver3.2jBOLT Ver3.2
jBOLT Ver3.2
 
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
 
20200527 oracle cloud infrastructure data science
20200527 oracle cloud infrastructure data science20200527 oracle cloud infrastructure data science
20200527 oracle cloud infrastructure data science
 

JPA説明会

  • 1. JPA 説明会その1 O/R マッピングの基本概念 および静的マッピング
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23. 最も基本的な関連マッピング: 「一方向多対1」 CUSTOMER テーブル BRANCH テーブル @Entity public class Customer { @Id private Long id; @ManyToOne private Branch branch; … } @Entity public class Branch { @Id private Long id; … } 外部キー列を使って関連先テーブルの主キー列と関連付ける 外部キー列の名前はデフォルトで「関連先エンティティ名 _ 主キー名」となる 1 2 2 1 2 3 BRANCH_ID ID 2 1 ID
  • 24. 外部キー列の名前を明示的に指定したい場合 CUSTOMER テーブル BRANCH テーブル @Entity public class Customer { @Id private Long id; @ManyToOne @JoinColumn(name=“BRANCH_CODE”) private Branch branch; … } @Entity public class Branch { @Id private Long id; … } @JoinColumn を使って外部キー列名を指定する 1 2 2 1 2 3 BRANCH_CODE ID 2 1 ID
  • 25. 関連を双方向にするには @Entity public class Customer { @Id private Long id; @ManyToOne private Branch branch; … } @Entity public class Branch { @Id private Long id; @OneToMany(mappedBy=“branch”) Set<Customer> customers … } CUSTOMER テーブル BRANCH テーブル テーブル上は単方向の場合と区別がない!! 関連の方向性というのは OO モデルにのみ存在する概念で、もともとテーブルモデル上は存在しない。 1 2 2 1 2 3 BRANCH_ID ID 2 1 ID
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.