2017-07-26 63 views
0

我在我的应用程序中使用hibernate。我为每个事务使用单独的会话对象。那么会话缓存如何有用?我必须使用其他级别的缓存吗?如果每个事务使用单独的会话,Hibernate一级缓存的用途是什么?

+0

正确的一级缓存是一个会话级缓存,它默认启用,你不能禁用它。它与你的会话相关联,当你谈论第一级缓存时,你实际上谈论的是会话,它是一样的。 –

+0

二级缓存是应用程序中所有会话共享的缓存,例如,如果您在所有应用程序(例如,列表,列表等)中都有通用的引用数据,那么它对于只读数据非常有效。此缓存默认情况下处于禁用状态,您可以启用或不启用。 –

回答

0

您在会话中调用的所有persist,update,delete操作都将存储在该缓存中。 在刷新持久化上下文之后,数据库将被命中,因此该高速缓存的内容传输到数据库的时刻即将到来。因此,即使它仅限于单个会话,它仍然可以提高您的性能。

当你试图找到一个实体并且它已经在缓存中时,数据库不会被该查找命中 - 这是另一种可能的性能增益。

有所谓的二级缓存,不仅限于单个持久性上下文,您可以阅读它们,但这是一个更复杂的主题。 ;)

相关问题