Spring、JPA、Hibernateを使用して Java EE アプリケーションを開発しています。
私たちのビジネス モデルでは、OneToMany または OneToOne のいずれかの複数の後方参照があります。処理目的で必要です。
後方参照を自動的に処理する多くのセッターを持つことになります:
class Dog {
@OneToOne
private DogOwner owner;
public void setOwner(DogOwner owner) {
this.owner = owner;
if (!this.owner.getDog().equal(this)) {
owner.setDog(this);
}
}
[...]
}
class DogOwner {
@OneToOne(mappedBy="owner")
private Dog dog;
public void setDog(Dog dog) {
this.dog = dog;
if (!this.dog.getOwner().equal(this)) {
dog.setOwner(this)
}
}
[...]
}
セット/リストのOneToManyアソシエーションとメソッドについても同じことが言えます。add()
これは機能しますが、すべての後方参照に対してこれらの自動セッターを記述するのは少し面倒で、エラーが発生しやすくなります。
JPAには必要なすべての注釈があり、Spring / OAPの力を備えているため、それを自動的に処理できる構成またはフレームワークがありますか?
編集:例
明確にするために、「永続化」を行う前であっても、モデル内で後方参照が自動的に一貫性を保つことを望みます。
これが私が望む動作です:
Dog rex = new Dog();
Dog mirza = new Dog();
DogOwner bob = new DogOwner();
bob.setDog(rex);
assert(rex.getOwner() == bob);
bob.setDog(mirza);
assert(rex.getOwner() == null);
assert(mirza.getOwner() == bob);
そうでない場合は、自分で書き込もうとしていると思います。