Java SessionFactory.openSession()和;SessionFactory.getCurrentTransaction().commit()
如果在方法结束时使用Java SessionFactory.openSession()和;SessionFactory.getCurrentTransaction().commit(),java,hibernate,Java,Hibernate,如果在方法结束时使用session.getCurrentTransaction().commit()关闭会话或使用session.close()关闭会话,会发生什么情况 public static void deleteYear(Years year) { Session session = sessionFactory.openSession(); session.beginTransaction(); session.delete(year);
session.getCurrentTransaction().commit()
关闭会话或使用session.close()
关闭会话,会发生什么情况
public static void deleteYear(Years year)
{
Session session = sessionFactory.openSession();
session.beginTransaction();
session.delete(year);
// what is the best way to close session
session.getTransaction().commit();
//or : session.close(); ???
}
执行会话事务的更好方法
Session sess=getSession();
Transcration tx=sess.beginTranscration();
//do something with session
sess.save(obj);
tx.commit();
sess.close;
我推荐。进行会话事务的更好方法
Session sess=getSession();
Transcration tx=sess.beginTranscration();
//do something with session
sess.save(obj);
tx.commit();
sess.close;
我推荐。ASAIK,这两种操作完全不同
sessionFactory.openSession()
:它打开一个
session.beginTransaction()
:它开始一个事务,事务是一个原子工作单元,它应该完全成功或失败
session.getTransaction().commit()
:它提交事务,意味着在beginTransaction和此调用之间发生的所有事情都将持久化到数据库。如果不提交事务,则事务中发生的所有更改都将丢失。提交事务无法关闭会话
session.close()
:关闭会话并释放获取的资源
这意味着您需要同时调用commit()
和session.close()
ASAIK,这两种操作完全不同
sessionFactory.openSession()
:它打开一个
session.beginTransaction()
:它开始一个事务,事务是一个原子工作单元,它应该完全成功或失败
session.getTransaction().commit()
:它提交事务,意味着在beginTransaction和此调用之间发生的所有事情都将持久化到数据库。如果不提交事务,则事务中发生的所有更改都将丢失。提交事务无法关闭会话
session.close()
:关闭会话并释放获取的资源
这意味着您需要同时调用commit()
和session.close()
这完全是两码事
COMMIT
进行迄今为止在事务中发生的更改。
CLOSE
关闭会话,您将无法再访问该会话。
这样你就可以两者兼得了
需要记住的一点是:没有必要关闭会话;但是,会话结束时应断开连接。这是两件完全不同的事情
COMMIT
进行迄今为止在事务中发生的更改。
CLOSE
关闭会话,您将无法再访问该会话。
这样你就可以两者兼得了
需要记住的一点是:没有必要关闭会话;但是,会话应在结束时断开连接