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
オブジェクトに影響を与えずに自由に操作できます。