日期:2014-05-20  浏览次数:20822 次

关于 KEY-VALUE缓存的问题
数据库的二级缓存 ,是不是就是说 我有 如下模型 。 Order 它里面有属性 List<ItemLine>

如果我查询Order 对象, 此时 我可以有两种选择 

1,查处 Order 放入缓存 ,但是 List<ItemLine> 属性不填充, 然后再通过外键查询出List<ItemLine> ,然后也放在缓存里面,不过这样好像不太容易标识这个 List
2.查询Order 并查出List<ItemList> 并把Order 填充好,作为一个对象存在缓存里,请问一般是如何处理的?  


还有很多这方面的疑问 请解答



------解决方案--------------------
sf。。
------解决方案--------------------
不知道数据库二级缓存是啥,我只知道,将检索的数据利用map构造个缓存对象存储起来。
------解决方案--------------------
学习下。。。数据库的二级缓存不了解,但是我只知道hibernate有二级缓存
------解决方案--------------------
你可以放在缓存里 如本地缓存中 可以用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
------解决方案--------------------
延迟加载的话,可以先不查list的东西,用的时候再操作。
------解决方案--------------------
探讨

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


如果 有一个一对多关系,是先完成一对多映射然后一起放入还是怎样

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

以上的希望对你有帮助。