gpt4 book ai didi

Hibernate 二级缓存示例

转载 作者:行者123 更新时间:2023-12-04 20:44:25 25 4
gpt4 key购买 nike

我正在开发 hibernate + ehcache 程序。

@Entity
@Table(name = "pizza")
public class Pizza implements Serializable{
@Id
@GeneratedValue
private Integer id;
private String name;
private double price;

public long getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public double getPrice() {
return price;
}

public void setPrice(double price) {
this.price = price;
}

}

缓存文件
  <cache name="com.abp.osp.domain.Pizza"   
maxElementsInMemory="100"
eternal="false"
timeToIdleSeconds="5"
timeToLiveSeconds="200" />
</ehcache>

我在 bean.xml 中提到了 ehcache
   <prop key="hibernate.cache.provider_configuration_file_resource_path">ehcache.xml</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</prop>
<prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</prop>

我在 dao 类中的调用方法是
 Session session1=sessionFactory.openSession();  

Pizza pizza2=(Pizza)session1.load(Pizza.class, 2);
System.out.println("pizza2--"+pizza2.getName());
session1.close();

Session session2=sessionFactory.openSession();

Pizza pizza4=(Pizza)session2.load(Pizza.class, 2);
System.out.println("pizza4--"+pizza4.getName());
session2.close();

输出是:
Hibernate: select pizza0_.id as id0_0_, pizza0_.name as name0_0_, pizza0_.price as price0_0_ from pizza pizza0_ where pizza0_.id=?
pizza2--Thin Crust
Hibernate: select pizza0_.id as id0_0_, pizza0_.name as name0_0_, pizza0_.price as price0_0_ from pizza pizza0_ where pizza0_.id=?
pizza4--Thin Crust

但是它在数据库中命中了两次。我在我的代码中没有发现任何错误。请告诉我为什么它在数据库中命中了两次。

最佳答案

我已经解决了我的问题。我需要补充

@Cache(usage=CacheConcurrencyStrategy.READ_ONLY,region="pizza")

在域类中。
@Entity
@Cache(usage=CacheConcurrencyStrategy.READ_ONLY,region="pizza")
@Table(name = "pizza")
public class Pizza implements Serializable{

关于Hibernate 二级缓存示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20584585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com