hibernate
アノテーションを使用したHibernateエンティティリレーションシップ
サーチ…
パラメーター
| 注釈 | 詳細 |
|---|---|
@OneToOne | 対応するオブジェクトとの1対1の関係を指定します。 |
@OneToMany | 多くのオブジェクトにマップする単一のオブジェクトを指定します。 |
@ManyToOne | 単一のオブジェクトにマップされるオブジェクトのコレクションを指定します。 |
@Entity | データベーステーブルにマップするオブジェクトを指定します。 |
@Table | このオブジェクトがマップするデータベーステーブルも指定します。 |
@JoinColumn | foreginキーが格納されている列を指定します。 |
@JoinTable | 外部キーを格納する中間テーブルを指定します。 |
ユーザー管理のジョイン・テーブル・オブジェクトを使用して、多対多の双方向
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany(mappedBy = "bar")
private List<FooBar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@OneToMany(mappedBy = "foo")
private List<FooBar> foos;
}
@Entity
@Table(name="FOO_BAR")
public class FooBar {
private UUID fooBarId;
@ManyToOne
@JoinColumn(name = "fooId")
private Foo foo;
@ManyToOne
@JoinColumn(name = "barId")
private Bar bar;
//You can store other objects/fields on this table here.
}
ユーザーが管理する中間結合テーブルを使用して、多くのFooオブジェクトと多数のBarオブジェクトとの双方向の関係を指定します。
FooオブジェクトはFOOと呼ばれるテーブルに行として格納されFOO 。 Barオブジェクトは、 BARというテーブルに行として格納されます。 FooオブジェクトとBarオブジェクトの関係は、 FOO_BARというテーブルに格納されます。アプリケーションの一部としてFooBarオブジェクトがあります。
リレーションシップが作成された日付など、追加の情報をジョイン・オブジェクトに保存する場合に、一般的に使用されます。
Hibernateマネージド・ジョイン・テーブルを使用する多対多の双方向
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany
@JoinTable(name="FOO_BAR",
joinColumns = @JoinColumn(name="fooId"),
inverseJoinColumns = @JoinColumn(name="barId"))
private List<Bar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@OneToMany
@JoinTable(name="FOO_BAR",
joinColumns = @JoinColumn(name="barId"),
inverseJoinColumns = @JoinColumn(name="fooId"))
private List<Foo> foos;
}
Hibernateが管理する中間結合テーブルを使用して、多くのFooオブジェクトと多くのBarオブジェクトとの関係を指定します。
FooオブジェクトはFOOと呼ばれるテーブルに行として格納されFOO 。 Barオブジェクトは、 BARというテーブルに行として格納されます。 FooオブジェクトとBarオブジェクトの関係は、 FOO_BARというテーブルに格納されます。しかし、これは、アプリケーションの一部としてFooBarオブジェクトが存在しないことを意味します。
外部キーマッピングを使用した双方向1対多リレーションシップ
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany(mappedBy = "bar")
private List<Bar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@ManyToOne
@JoinColumn(name = "fooId")
private Foo foo;
}
Fooオブジェクトと外部キーを使用する多くのBarオブジェクトとの間の双方向関係を指定します。
FooオブジェクトはFOOと呼ばれるテーブルに行として格納されFOO 。 Barオブジェクトは、 BARというテーブルに行として格納されます。外部キーは、 fooIdという列のBARテーブルに格納されます。
Foo.classによって管理される双方向の一対一の関係
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "barId")
private Bar bar;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@OneToOne(mappedBy = "bar")
private Foo foo;
}
外部キーを使用して1つのFooオブジェクトと1つのBarオブジェクトの間の双方向関係を指定します。
FooオブジェクトはFOOと呼ばれるテーブルに行として格納されFOO 。 Barオブジェクトは、 BARというテーブルに行として格納されます。外部キーは、 barIdという列のFOOテーブルに格納されFOO 。
mappedBy値は、オブジェクトのフィールド名であり、列名ではありません。
ユーザー管理のジョイン・テーブルを使用した単方向1対多リレーションシップ
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany
@JoinTable(name="FOO_BAR",
joinColumns = @JoinColumn(name="fooId"),
inverseJoinColumns = @JoinColumn(name="barId", unique=true))
private List<Bar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
//No Mapping specified here.
}
@Entity
@Table(name="FOO_BAR")
public class FooBar {
private UUID fooBarId;
@ManyToOne
@JoinColumn(name = "fooId")
private Foo foo;
@ManyToOne
@JoinColumn(name = "barId", unique = true)
private Bar bar;
//You can store other objects/fields on this table here.
}
ユーザーが管理する中間結合テーブルを使用して、1つのFooオブジェクトと多数のBarオブジェクトとの一方向の関係を指定します。
これはManyToMany関係に似ていますが、ターゲット外部キーにunique制約を追加すると、 OneToManyことを強制できOneToMany 。
FooオブジェクトはFOOと呼ばれるテーブルに行として格納されFOO 。 Barオブジェクトは、 BARというテーブルに行として格納されます。 FooオブジェクトとBarオブジェクトの関係は、 FOO_BARというテーブルに格納されます。アプリケーションの一部としてFooBarオブジェクトがあります。
Fooオブジェクトに戻るBarオブジェクトのマッピングがないことに注意してください。 BarオブジェクトはFooオブジェクトに影響を与えずに自由に操作できます。
実行できるRoleのリストを持つUserオブジェクトを設定するとき、Spring Securityでよく使用されます。あなたは、削除カスケードを気にすることなく、ユーザーに役割を追加および削除することができますRoleさんを。
単一指向の一対一の関係
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToOne
private Bar bar;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
//No corresponding mapping to Foo.class
}
1つのFooオブジェクトと1つのBarオブジェクトの一方向の関係を指定します。
FooオブジェクトはFOOと呼ばれるテーブルに行として格納されFOO 。 Barオブジェクトは、 BARというテーブルに行として格納されます。
Fooオブジェクトに戻るBarオブジェクトのマッピングがないことに注意してください。 BarオブジェクトはFooオブジェクトに影響を与えずに自由に操作できます。





