Session应该是类似于缓存的东西吧。也就是说如果我查询数据先在缓存中查找.如果找不到再去数据库中找但是如果数据库在这期间被更改了怎么办?但是Session中还是可以找到,这怎么办?
是不是数据库一更新,Session也会更新啊?
有些概念理解的有些混乱,希望有人能帮我捋顺一下.
这这谢谢大家了.

解决方案 »

  1.   

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

  2.   

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

  3.   

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