gpt4 book ai didi

java - 如何正确使用Java的Observable和Observer与JPA实体?

转载 作者:行者123 更新时间:2023-12-01 10:19:49 25 4
gpt4 key购买 nike

我有两个实体:

    @Entity
public class A extends Observable {

@Id
private int id;

}

@Entity
public class B implements Observer {

@Id
private int id;

@ManyToMany
private List<A> observableList;

public void addObservable(A observable){
observableList.add(observable);
observable.addObserver(this); //How will this get persisted
// as it gets added in the super
//class Observable which is not an entity?
}

@Override
public void update(Observable o, Object arg){
//update methods
}
}

我的目标是每当 B 的任何可观察值发生变化时通知 B。因此我正在研究 JDK 的 Observer/Observable。

我面临的问题是如何持久化添加的观察者?

我可以想到的一种可能的方法:也在子类 A 中维护观察者列表,并执行加载后操作以将观察者添加到 Observable 父类(super class):

     @Entity
public class A extends Observable {

@Id
private int id;

@OneToMany
private List<B> observers;

@PostLoad
public void initialize(){
for(B b : observers){
addObserver(b);
}
}
}

这样,我就可以在父类(super class)和子类中维护相同的对象列表,这对我来说似乎是一个糟糕的解决方法。

无论使用或不使用观察者模式,我怎样才能干净地实现这一点?

最佳答案

您需要重新考虑您的实际目标是什么,至少对我来说,用例完全不清楚。

  • JPA 不会在对象之间创建连接,除非连接作为列存储在数据库中
  • 您没有在任何地方调用notifyobservers方法,因此不会实际广播任何更改
  • 您可能应该使用 JPA 生命周期事件(例如 @PrePersist)和适当的处理程序而不是观察者

关于java - 如何正确使用Java的Observable和Observer与JPA实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35671660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com