HIBERNATE的SESSION和事务
以往开发模式总是针对SESSION-PER-REQUEST来进行,虽然有的时候很棒,但是对于一个相对长业务会话中,存在着多个操作的原子会话,操作期间有用户的考虑时间(跨页面),如果采用SESSION持久化上下文的话,可以在一个业务下保存这个SESSION,在提交方式上设置手动提交,这样就可以在一个SESSION中应用多个事务了,而且不用每次事务结束都同步数据库,只有在原子操作完成的情况才手动同步,但是有两个问题不理解:
1.
用户期间有思考时间,如果这个时候一直持有SESSION的实例,那么JDBC连接应该也是一直连接着,长时间的连接会影响并发访问的速度.但是每次事务结束释放了连接,又是频繁的连接释放.这个地方应该如何来理解?
HIBERNATE中的SESSION实例的创建是否就已经开启了JDBC连接,是否可以在需要的时候才开启连接,而不是实例化SESSION的时候就创建好了JDBC连接,如何设置?
2.我们保留持久化上下文的一个目的是解决懒加载问题,也就是让我们需要应用的实体在受管的环境下,是否实体在受管环境下的话,表示他们与数据库的连接也必须打开,如果关闭的话,就不存在受管的情况了.实际和上面的问题差不多:SESSION实例创建后是否JDBC连接就已经开启?
[该贴被yongbuyanbai于2008-11-16 10:25修改过]