dowork方法问题,求大神解释

来源:2-6 session详解(下)

阿丁4513

2016-03-15 10:46

doWork方法在这里就只是为了输出HashCode?前面说doWork会自动执行事务,什么时候可以自动执行事务!,而不要后面的一个transaction.commit();方法提交事务!

写回答 关注

2回答

  • VilleValo
    2016-03-15 22:48:51

    问题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了。


  • keisei
    2016-03-15 22:01:30

    SessionFactory中有两个获取Session的方法,openSession()和getCurrentSession()。其中,getCurrentSession()方法在事务提交或回滚之后会自动关闭,openSession()需要手动关闭。事务需要提交,而是说doWork()可以避免调用了openSession()而忘记执行session.close()。

Hibernate初探之单表映射

Java持久化框架Hibernate入门教程,掌握Hibernate基本概念

74810 学习 · 793 问题

查看课程

相似问题