我正在使用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);
如果没有,我想我要自己写了。