java Web开发 今天在学习别人代码时发现这样的一条语句 
Query q  = this.getSession().creatQyery(hql.toString()).setCacheable(true)。其中setCacheable(true)是设置二级缓存的。我的疑问是,这个地方设置缓存有什么作用?跟浏览器缓存有什么关系吗?

解决方案 »

  1.   

    跟浏览器没有关系的。
    java对象的属性(通常是一些集合类型的属性 )占用的内存空间。如果对象的占用的内存很大就称为重量级的对象。如果对象的内存小就称为轻量级的对象。
    Session 的缓存被称为hibernate的第一级缓存。SessionFactory的外置缓存称为hibernate 的二级缓存。这两个缓存都位于持久层,它们存放的都是数据库数据的拷贝。SessionFactory的内置缓存 存放元数据和预定义SQL, SessionFactory的内置缓存是只读缓存。
    再来说下Session 缓存的三大作用:
    1,减少数据库的访问频率,提高访问性能。
    2,保证缓存中的对象与数据库同步,位于缓存中的对象称为持久化对象。
    3,当持久化对象之间存在关联时,Session 保证不出现对象图的死锁。