我的系统中使用了c3p0的连接池,用spring的DAO进行数据库访问,有个问题不解,每当我用sessionFactory去open一个session后,此时的session是否会占用着连接,若是,是否在session未关闭前连接都被占用着。谢谢了。
连接池中的活动连接分两种状态,一种是空闲,一种是占用.
一个Session是一个缓存对象,它依附于一个连接.open操作生成一个Session实例,同时会到池中使一条连接的状态由空闲标记为占用,直到commit操作清理缓存,提交事务,Session关闭清空缓存,随后Session对象释放,这时所占用的连接标记为空闲,等特下次的使用.
楼主的理解是正确的.
用sessionFactory去open一个session后,此时的session当然会占用着连接,hibernate里的session就和jdbc的connection是类似的概念,在session未关闭前连接都被占用着