1.sqlsession.close实际上执行了 conn.close
1.sqlsession.close即会关闭sqlSession,也会执行conn.close
2.如果使用连接池,那么conn.close只代表,将连接归还给连接池,不代表连接关闭
3.如果没有使用连接池,那么sqlSession.close代表执行conn.close代表关闭连接
2.spring整合mybatis,为什么不用手动执行sqlsession.close
1.spring一般生成SqlSessionTemplate用来实现SqlSession接口,可以把SqlSessionTemplate看成是SqlSession,
在这个类中通过代理来关闭session,所以就不需要我们手动去执行close方法
2.相当于我们执行完一个 @translation,sqlsession会自动执行close
是通过代理方式完成 connection连接的关闭.而且是通过jdk的代理.
3.总结
1.一般我们都使用了连接池技术
2.sqlSession.close实际上执行了,conn.close
3.conn.close要分是否使用连接池技术来看是否关闭连接
4.spring默认不用执行sqlsession.close,它通过动态代理来完成的执行了sqlSession.close
|