【发布时间】:2011-07-15 16:55:36
【问题描述】:
我正在尝试使用带有 EHCache 的 Hibernate 的二级缓存。我在应用程序中配置了一些用@Cache 标记的实体,我看到 EHCache 正确使用了它们。
但是我观察到的是,当我保存/更新任何其他不应该缓存的实体时;我看到它被 put() 方法添加到缓存中。数据的检索不会将非缓存对象放入缓存中。
这种行为对我来说似乎不正确,因为我们应该只将缓存的对象添加到缓存中,而不是保存/更新操作中的任何对象。
我错过了什么吗?
当我执行任何保存/更新操作时,我看到在日志中添加的实体。
2011-07-15 22:02:28 调试 [http-0.0.0.0-8080-1] EhcacheGeneralDataRegion.put(83) |键:mmd_addresses 值:5368822204260352 2011-07-15 22:02:28 调试 [http-0.0.0.0-8080-1] EhcacheGeneralDataRegion.put(83) |键:fqng_users 值:5368822205923328 2011-07-15 22:02:29 调试 [http-0.0.0.0-8080-1] EhcacheGeneralDataRegion.put(83) |键:fqng_link_user_applications 值:5368822209306624 2011-07-15 22:02:30 调试 [http-0.0.0.0-8080-1] EhcacheGeneralDataRegion.put(83) |键:mmd_addresses 值:5368821964824576 2011-07-15 22:02:30 调试 [http-0.0.0.0-8080-1] EhcacheGeneralDataRegion.put(83) |键:fqng_users 值:5368821964824576 2011-07-15 22:02:30 调试 [http-0.0.0.0-8080-1] EhcacheGeneralDataRegion.put(83) |键:fqng_link_user_applications 值:5368821964824576 2011-07-15 22:05:55 调试 [http-0.0.0.0-8080-6] EhcacheGeneralDataRegion.put(83) |键:fqng_users 值:5368823053987840
这些对象都没有@Cache 注释。
@Entity
@Table(name = "fqng_users", uniqueConstraints = @UniqueConstraint(columnNames = "NAME"))
// @Audited
public class Users implements java.io.Serializable {
@Entity
@org.hibernate.annotations.Entity(dynamicUpdate = true)
@Table(name = "mmd_addresses")
// @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
public class Addresses implements java.io.Serializable {
【问题讨论】: