Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SessionFactory.openSession()和;SessionFactory.getCurrentTransaction().commit()_Java_Hibernate - Fatal编程技术网

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
关闭会话,您将无法再访问该会话。

这样你就可以两者兼得了

需要记住的一点是:没有必要关闭会话;但是,会话应在结束时断开连接