阿丁4513
2016-03-15 10:46
doWork方法在这里就只是为了输出HashCode?前面说doWork会自动执行事务,什么时候可以自动执行事务!,而不要后面的一个transaction.commit();方法提交事务!
问题1回答:这里的doWork确实是要得到HashCode,用来比较是否是两个不同的连接(说明getCurrentSession是单例模式,而openSession每次都要占用不同的连接)。
问题2回答:这里Work()的excute方法里有Connection对象的参数,可以通过:
session.doWork(new Work(){
public void execute(Connection Conn) throws SQLException {
// TODO Auto-generated method stub
Conn.setAutoCommit(true);
}
});
自动执行事务,这样就不用transaction了。
SessionFactory中有两个获取Session的方法,openSession()和getCurrentSession()。其中,getCurrentSession()方法在事务提交或回滚之后会自动关闭,openSession()需要手动关闭。事务需要提交,而是说doWork()可以避免调用了openSession()而忘记执行session.close()。
Hibernate初探之单表映射
74810 学习 · 793 问题
相似问题