我知道这个问题在Stackoverflow上问了很多次但是我在寻找它在我的代码中是如何发生的?我应该在哪里寻找代码中的更改。
忽略sessionFactory和Hibernate配置的变量声明我知道如何创建数据库连接。
public void callMethod(MyClass m){
MyClass updatedMyClass = MyMethod(m);
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
session.saveOrUpdate(updatedMyClass);
transaction.commit();
session.close();
}
public MyClass MyMethod(MyClass m){
Session session = sessionFactory.openSession();
MyClass objMyClass = (MyClass) session.get(MyClass.class, m.getId());
.....
objMyClass.setSomething(...);
.....
session.close();
return objMyClass;
}
我对......很感兴趣。
Session.get
使用哪种锁定模式?session.close()
释放该数据库连接会话的所有锁定?参考:org.hibernate.exception.LockAcquisitionException - Threads