Skip to content

Instantly share code, notes, and snippets.

@momotar
momotar / associative-entity.md
Last active Jul 13, 2021
連関エンティティ
View associative-entity.md

#連関エンティティ

オプショナリティを加えた “商品” と “注文” が多対多の ER 図

多対多」のリレーションは、そのまま論理データモデルに転換していくと非正規形になる。これは、「多」の部分が繰り返し項目(非単純定義域)になってしまうためである。

注文コード 注文日 商品 注文テーブル
@momotar
momotar / how-model-many-to-many.md
Last active Jul 10, 2020
多対多はどういうモデルか
View how-model-many-to-many.md

###その他のモデル解説はこちら

#多対多はどういうモデルか

“商品” と “注文” が多対多の例

「多対多」の関係を見る。上の図は “商品” と “注文” の例である。オプショナリティを加えない表記方法の場合、いずれも0を含む概念になるので「注文のない商品」や「商品の存在しない注文」などもあり得ると解釈できる。

@momotar
momotar / how-model-one-tomany.md
Last active Sep 20, 2015
1対多はどういうモデルか
View how-model-one-tomany.md

###その他のモデル解説はこちら

#1対多はどういうモデルか

“部署” と “社員” が1対多の例

“1対多” の関係を見ていく。上の図は “部署” と “社員” の例である。オプショナリティを加えない表記方法の場合、いずれも0を含む概念になるので「社員の1人もいない部署」や「どこの部署にも所属しない社員」などが存在するという解釈になる。

@momotar
momotar / how-model-one-to-one.md
Last active Sep 20, 2015
1対1はどういうモデルか
View how-model-one-to-one.md

###その他のモデル解説はこちら

#1対1はどういうモデルか

“見積” と “契約” が1対1の例

上の図は “見積” と “契約” が1対1の例である。オプショナリティを加えない表記法の場合、 “見積” から見た “契約” も、 “契約” から見た “見積” も0又は1になる。

@momotar
momotar / jpa-relationship-on-rdb.md
Last active Sep 19, 2015
JPA から見たデータベースにおけるリレーションシップ
View jpa-relationship-on-rdb.md

#データベースにおけるリレーションシップ

JPA とリレーショナルデータベース(以下、RDB という)は、 その構造・仕様上の違いからリレーションシップのモデル化手法にも大きな違いがある。

Java の Web アプリケーションでは、モデル化の対象はエンティティ(クラス)である。それに対して、RDB はリレーション(テーブル)の集まりなので、モデル化の対象はすべてテーブルになる。

JPA では関連をモデル化するのに、List、Set、Map などの Collection やオブジェクトを使うが、RDB にはそのような手法はない。

##2種類の方法

@momotar
momotar / 4way-for-doing-query-on-jpa.md
Last active Jun 15, 2021
JPA クエリを実装する4つの手段
View 4way-for-doing-query-on-jpa.md

#JPA クエリを実装する4つの手段

JPA では EntityManage を使用してクエリーを構築・実行するが、主な実装方法は以下の通り。

  • ネイティブクエリ
  • JPQL
  • 名前付きクエリ
  • CriteriaAPI

##ネイティブクエリ

@momotar
momotar / reading-notations-of-er-diagram.md
Last active Jul 7, 2021
ER 図の多重度とオプショナリティを読む
View reading-notations-of-er-diagram.md

#ER 図の多重度とオプショナリティを読む

単純なER 図を例にとって、多重度(カーディナリティ)とオプショナリティを読み取ってみます。

ER 図の表記は、一般的な IE 記法(Information Engineering Notation)に従います。

##全体図

ER 図:業務全体図

@momotar
momotar / optionality-relationship.md
Last active Nov 4, 2021
オプショナリティ - リレーションシップでの多重度の詳細
View optionality-relationship.md

#オプショナリティ

データモデルのリレーションシップを表現する上で「多重度にゼロを含むか否か」を区別して表記することをオプショナリティと呼ぶ。

オプショナリティには2パターンあり、0を許容しない場合を Mandatory、インスタンスが0のケースもありえるのが Optional という。

リレーションシップの表現でオプショナリティを行うかどうかは任意になるが、行ったほうが当然ながらデータモデルの正確性は増す。

##Mandatory

@momotar
momotar / flush-on-jpa.md
Created Sep 18, 2015
永続化コンテキストのデータベースとの同期
View flush-on-jpa.md

#永続化コンテキストのデータベースとの同期

データベースにSQLを発行し、永続化コンテキストのエンティティの状態をデータベースと同期化させる処理のことを、JPAではフラッシュと呼ぶ。JPAでは、以下の3つのタイミングでフラッシュを実行する。

##フラッシュのタイミング

タイミング 説明
トランザクションコミット トランザクションをコミットする直前のタイミングで、更新した エンティティがあればSQLを発行する。
JPQL発行 JPQLを発行する直前のタイミングで、更新したエンティティが あればSQLを発行する。