AI Academy
キャンペーン
CodeGym University
学習
コース
課題
アンケート & クイズ
ゲーム
ヘルプ
スケジュール
コミュニティ
ユーザー
フォーラム
チャット
記事
成功事例
アクティビティ
レビュー
サブスクリプション
ライトテーマ
レッスン
レビュー
私たちについて
開始
学習開始
今すぐ学習を始める
学習の進捗
コース
クエストマップ
レッスン
Java
SQL & Hibernate
レベル 15
エンティティ階層の操作
SQL & Hibernate
レベル 15,
レッスン 0
保全の問題 今日は、Hibernate 機能を使用してクラス階層をデータベースに保存する、新しくて非常に興味深いスキームを紹介します。 クラス階層は、継承関係によって相互に関連付けられたクラスのセットです。 データベースに保存したい 3 つのクラスがあると想像してください。 class User {
クラス階層全体を表す単一のテーブル
SQL & Hibernate
レベル 15,
レッスン 1
説明 クラス階層を格納する次のアプローチは、階層内のすべてのクラスを 1 つのテーブルに格納することです。この戦略は単一テーブルと呼ばれます。 たとえば、次のようになります。 CREATE TABLE user_ employee_client {
ディスクリミネーター
SQL & Hibernate
レベル 15,
レッスン 2
説明 前のレッスンでは、Hibernate が特別な DTYPE VARCHAR 列を使用してエンティティ クラスの名前を保存することを見ました。このような列は、ディスクリミネーターと呼ばれます。これは、データベース内の特定の行に対してどのクラスを作成するかを明確に決定するために使用されます。 @DiscriminatorColumnアノテーションを使用してこの列を操作できます。例: @DiscriminatorColumn(name="имя_колонки", dis
結合されたテーブル
SQL & Hibernate
レベル 15,
レッスン 3
説明 クラス階層をデータベースに格納するための別の戦略は、結合テーブルと呼ばれます。これには特別な注釈があります。 @Inheritance(strategy = InheritanceType.JOINED) 私たちのクラスの例: @Inheritance(strategy = InheritanceType.JOINED)
クラスごとのテーブル
SQL & Hibernate
レベル 15,
レッスン 4
5.1 説明 そして最後の戦略は、クラスごとのテーブルです。これは、クラスごとに別のテーブルが使用されることを意味します。ある意味、これは同じ MappedSuperClass ですが、形式が更新されただけです。 まず、アノテーションを使用する必要があります。 @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
階層保持戦略の選択
SQL & Hibernate
レベル 15,
レッスン 5
説明 上記の戦略とテクニックにはそれぞれ、独自の長所と短所があります。特定の戦略を選択するための一般的な推奨事項は次のようになります。 UNION に基づく TABLE_PER_CLASS 戦略 この戦略は、多態性のクエリと関連付けが必要ない場合に選択するのが最適です。めったに実行しない(またはまったく実行しない)場合は、「ユーザー ユーザーからユーザーを選択」します。User を参照する Entity クラスがない場合は、これが最良のオプションです (最適化された多態性クエ
Please enable JavaScript to continue using this application.