我了解到Ehcache可以用作Hibernate的二级缓存。
但是,它是什么第一级缓存?它有什么用呢?第一级缓存是否与第二级缓存通信?有人能解释一下在两级系统中缓存数据时到底发生了什么吗?
谢谢。
发布于 2012-04-21 16:57:21
Hibernate的一级缓存位于您的Hibernate会话中。它的生命周期很短,并且有和Hibernate会话一样多的一级缓存。通常,web应用程序中的每个用户请求都有一个会话。
一级缓存包含会话中使用的所有对象,也包括尚未持久存储到底层DB中的脏对象。刷新会话后,一级缓存中的所有脏对象都将通过二级缓存传播,并保存到数据库中。
只有一个二级缓存,作为数据库和会话中所有一级缓存之间的缓存。因此,当有人从数据库加载一个对象时,它将被保存在二级缓存中。这样,当其他人加载相同的对象时,它不会来自DB,而是来自二级缓存。对象将保留在二级缓存中,直到不再需要它们为止,具体取决于缓存逐出策略。
当有人更改一个对象并将其刷新到DB时,该对象也会在第二个缓存中更改。用户在他们的一级缓存中已经有了相同的对象,尝试更改和刷新它将会得到一个异常。
https://stackoverflow.com/questions/10257526
复制相似问题