在 Hibernate 中更新与最初创建对象不同的会话中的对象是不好的做法吗?我认为答案是肯定的,因为 Hibernate Session(默认情况下)会缓存其 Session 对象,并在 Session 关闭或对象被驱逐时释放它们。因此,在一个会话中创建一个对象然后在另一个会话中更新它(而对象在第一个会话中仍然“活着”)对我来说似乎是不好的做法。谁能解释一下为什么,有什么影响?例如,考虑这段代码(为了清楚起见,它被缩短了):
private void updateRequest(Request req){ //Request came from another Hibernate Session
MyDAO myDB = null;
myDB = new MyDAO();
Transaction trans = myDB.getSession().beginTransaction();
myDB.getSession().update(object);
trans.commit();
}