gpt4 book ai didi

java - SessionFactory.openSession() 和 SessionFactory.getCurrentTransaction().commit() 之间的区别

转载 作者:行者123 更新时间:2023-11-30 07:17:42 26 4
gpt4 key购买 nike

如果我在结束时用 Session.getCurrentTransaction().commit() 关闭 session 或用 session.close() 关闭 session 会发生什么方法?

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(); ???
}

最佳答案

ASAIK,这两个是完全不同的操作。

sessionFactory.openSession():它打开一个 session

session.beginTransaction():它开始一个 transaction ,事务是一个原子工作单元,它应该成功或完全失败。

session.getTransaction().commit():它提交事务,意味着在 beginTransaction 和此调用之间发生的所有事情都将持久保存到数据库中。如果您不提交事务,那么事务中发生的所有更改都将丢失。提交事务不会关闭 session

session.close():关闭 session 并释放获取的资源。

这意味着您需要调用 commit()session.close()

public static void deleteYear(Years year)
{
Session session = sessionFactory.openSession();
session.beginTransaction();
session.delete(year);
session.getTransaction().commit();
session.close();
}

关于java - SessionFactory.openSession() 和 SessionFactory.getCurrentTransaction().commit() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15848260/

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