admin管理员组

文章数量:1530865

2024年3月11日发(作者:)

hibernate 缓存面试题

Hibernate缓存面试题

一、什么是Hibernate缓存?

Hibernate缓存是一种用于提高性能的机制,它可以减少对数据库的

访问次数。Hibernate缓存分为一级缓存(Session缓存)和二级缓存

(SessionFactory缓存)两种。

二、一级缓存和二级缓存有什么区别?

1. 一级缓存:

- 是与Session绑定的缓存,它存储了在当前Session中查询的实

体对象。

- 一级缓存的范围是Session级别,当Session关闭时,缓存也将

被清除。

- 一级缓存通过Session的get()和load()方法进行更新和清除。

2. 二级缓存:

- 是与SessionFactory绑定的缓存,它存储了在整个应用程序中被

多个Session共享的实体对象。

- 二级缓存的范围是应用程序级别,当应用程序关闭时,缓存也将

被清除。

- 二级缓存通过配置文件指定,如或者

ties。

三、如何配置二级缓存?

配置Hibernate的二级缓存需要以下步骤:

1. 在中启用二级缓存:

```

name="_second_level_cache">true

```

2. 配置二级缓存的提供者:

```

name="y_class">e.E

hCacheRegionFactory

```

3. 针对需要缓存的实体类进行配置:

```

```

四、常见的缓存策略有哪些?

1. 读写(read-write)缓存策略:

- 当实体对象被查询时,将其放入缓存中。

- 当实体对象被更新时,将缓存中的对象清除,并更新数据库中的

对象。

2. 只读(read-only)缓存策略:

- 当实体对象被查询时,将其放入缓存中。

- 当实体对象被更新时,会抛出异常,因为只读缓存策略下不允许

更新操作。

3. 非严格读写(nonstrict-read-write)缓存策略:

- 当实体对象被查询时,将其放入缓存中。

- 当实体对象被更新时,将更新缓存中的对象,但不会立即更新数

据库中的对象。

4. 事务(transactional)缓存策略:

- 当实体对象被查询时,将其放入缓存中。

- 在事务提交时,会将缓存中的对象更新到数据库中。

五、如何避免Hibernate缓存带来的问题?

本文标签: 缓存对象实体策略进行