数据库的二级缓存 ,是不是就是说 我有 如下模型 。  Order  它里面有属性 List<ItemLine>如果我查询Order 对象, 此时 我可以有两种选择 1,查处 Order 放入缓存 ,但是 List<ItemLine>  属性不填充, 然后再通过外键查询出List<ItemLine>   ,然后也放在缓存里面,不过这样好像不太容易标识这个 List
2.查询Order 并查出List<ItemList> 并把Order 填充好,作为一个对象存在缓存里,请问一般是如何处理的?  
还有很多这方面的疑问 请解答

解决方案 »

  1.   

    不知道数据库二级缓存是啥,我只知道,将检索的数据利用map构造个缓存对象存储起来。
      

  2.   

    学习下数据库的二级缓存不了解,但是我只知道hibernate有二级缓存 
      

  3.   

    你可以放在缓存里 如本地缓存中 可以用oscache 或者ehcache
    还有就是你可以放在一个缓存产品里 如memcache或者redis(它可以存储list set等集合)里
    这样查询速度就会大增的
    http://blog.csdn.net/ajun_studio/article/details/6698147
    http://blog.csdn.net/ajun_studio/article/details/6745341
    http://blog.csdn.net/ajun_studio/article/details/6745791
      

  4.   

    延迟加载的话,可以先不查list的东西,用的时候再操作。
      

  5.   

    你完全理解错了缓存,缓存并不是你认为的那种通过不同方式查询出来放到对象中。
    怎么说呢,我认为理解缓存是通过以下两点:
    1、缓存数据的位置。这个位置并不是你说的不同的对象,而指比如缓存到内存中或者硬盘中。
    2、缓存的生命周期。这个不用我讲了吧,像一段会话session,或者整个程序的生命周期application等,这个不多说了。以上的希望对你有帮助。