日期:2014-05-19  浏览次数:20771 次

Hibernate中Session对象的理解。
Session应该是类似于缓存的东西吧。也就是说如果我查询数据先在缓存中查找.如果找不到再去数据库中找

但是如果数据库在这期间被更改了怎么办?但是Session中还是可以找到,这怎么办?
是不是数据库一更新,Session也会更新啊?
有些概念理解的有些混乱,希望有人能帮我捋顺一下.
这这谢谢大家了.

------解决方案--------------------
hibernate里面的缓存机制把缓存分为了两级,一种就是所谓的一级缓存也就是内置缓存,它就是session,然后根据你所理解Session的确是用于缓存的,但是这也是要持久化后才能管理的。如果当你想让数据库和session里面的数据同步的话,可以使用flush()方法。而如果按照你的意思的话,数据库一更新,Session也会更新的话,除非是一直保持在持久状态,但是我认为这样是不大可能的,因为当你从数据库里把数据查询出来后,Session的连接将会关闭,这时就从持久状态转变为了游离状态。所以这时如果后台不主动与数据库打交道的话,数据可能就有小小的变化。  --以上是我个人理解,小的也是个菜鸟,所以前辈们看了,请不要喷我呀
------解决方案--------------------
Session是Session,Cache是Cache,这个应该分清吧,顶多Session和Cache是有关联的而已

为了保持对象实体与数据库表之间的同步,貌似是通过hibernate侧来保证的,因为各种改变数据库的操作都是先通过hibernate的,如果不通过hibernate来更改数据库,就hibernate自己来说貌似没法保证了。但是hibernate能提供给第三方相应的缓存清除接口,变相保证同步。


------解决方案--------------------
去了解一下Hibernate Session到底是用来干嘛的!只有了解了 Session最基本的处理机制 才能明白