Hibernate二级缓存示例

2023-12-01

我正在开发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;
    }

}

ehcache.xml

  <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{
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate二级缓存示例 的相关文章

随机推荐

  • 锁助手的线程安全使用(关于内存屏障)

    我所说的锁定助手指的是一次性对象 可以通过它来实现锁定using声明 例如 考虑一个典型的用法SyncLock班级来自乔恩 斯基特的 MiscUtil public class Example private readonly SyncLo
  • 替换python中的特殊字符

    我有一些来自网络的文字 6 49 显然我希望它显示为 6 49 到目前为止我已经尝试过以下操作 s url title s s encode utf8 s s replace u 还有一些变体 在同一个论坛上找到它之后 但仍然没有运气 因为
  • 理解Python的枚举

    在转向 python 之前 我开始自学一些 c 并且习惯于编写循环 例如 for int i 0 i lt 20 i cout lt lt value of i lt lt i lt lt endl 转向 python 我经常发现自己使用类
  • Infinispan - 设置每个实体的expiration.lifespan

    我在 Jboss 6 1 0 上部署了一个 java Web 应用程序 它使用 infinispan 5 2 6 Final 我正在尝试设置每个实体特定的有效期遵循本指南 http infinispan org docs 5 2 x use
  • 为 .NET 项目选择数据库和 ORM

    我正在开发一个在客户端使用 Silverlight 的 NET 应用程序 现在我已经到了我想扔掉服务器端的静态虚拟数据并添加数据库的地步 对于数据库 我喜欢使用 ORM 之一 我可以在其中简单地标记我的模型类 并且数据库表是为我构建的 我之
  • 将 JavaScript 函数作为参数传递

    如何将函数作为参数传递 而无需在 父 函数中执行该函数或使用eval 因为我读到它是不安全的 我有这个 addContact entityId refreshContactList 它有效 但问题是refreshContactList当调用
  • 如何将修改/包装的 HTTPServletRequest 传递给后续的 Zuul Filter?

    我们有一个 Zuul 预过滤器 Filter1 它将检查传入的 HTTPServletRequest 并对其中的查询参数进行一些更改 以将其嵌入到自定义创建的请求中 包装 HttpServletRequestWrapper 现在 我想将这个
  • 如何通过Retrofit和GsonConverter处理JSONP响应?

    我需要解析来自 Flickr API 的响应 它以 json Flickr Feed jQuery 回调函数返回响应 这不是有效的 JSON 响应 我知道我们可以使用以下方法删除 Flickr API 的 JSON 回调方法nojsonca
  • 将窗口放置在 WPF 控件的左上角

    我试图以某种方式放置一个窗口 使其左上角位于特定 WPF 控件左上角的同一点 所以我尝试像这样获取控件的屏幕坐标 PresentationSource source PresentationSource FromVisual ctrl Po
  • 在 PHP 中获取本地计算机 IP 地址 [重复]

    这个问题在这里已经有答案了 我希望获取特定程序必须运行的本地计算机 IP 地址 要运行该页面 我首先检查本地 IP 地址是否与指定的 IP 地址匹配 然后才会打开该页面 我正在用 PHP 编程 我尝试过 SERVER 和 getenv 但它
  • 从 size_t 中减去会得到大的正数[重复]

    这个问题在这里已经有答案了 我刚刚遇到了一个令人讨厌的错误 其中有一个循环 for auto i 0 i lt vec size 1 i vec 是emtpy std vector 因此 vec size 1 计算结果为2 64在我的系统上
  • 无法在 SQL Server 2008 上绑定多部分标识符

    我有2张桌子 requests ID company id amount companies ID name 具有 FK 约束 requests company id gt companies id requests company can
  • iOS WiFi 通知 API

    有没有办法在 iOS 上以编程方式订阅 WiFi 通知 例如 假设用户没有禁用 WiFi 通知 当用户处于 WiFi 网络范围内时 操作系统会提供可用网络的通知 应用程序可以订阅此通知并向用户提供自己的通知吗 应用程序甚至可以检查 SSID
  • 如何解读ARM的SMC调用?

    我一直在阅读 Android 内核 了解 CPU 内核 又名 DVFS DCVS 的动态电源管理是如何完成的 我找到的代码here对以下函数进行一些调用 定义here 进而调用 SMC 汇编指令 ARM有一个文档解释了SMC调用约定 但我无
  • Symfony 4:忽略来自调试工具栏的内核事件

    我对 Symfony 还很陌生 所以如果这对你来说很明显 请原谅我 对于我的项目 我需要根据 url 执行一些操作 我使用内核事件 更具体地说是内核请求来执行此操作 在 services yaml 中 App Service UrlMana
  • 文本区域中的回车作为换行检索

    如何在文本区域中保留回车符 textarea value X String fromCharCode 13 X textarea value charCodeAt 1 returns 10 not 13 看这里 http jsfiddle
  • 使用PythonAnywhere作为游戏服务器

    我正在构建一款回合制游戏 希望实现客户端 服务器风格的网络 我真的只需要发送几个对象的位置和一些其他易于编码的数据 尽管我已经在套接字和扭曲中编写了一些基本的东西 但我对网络还很陌生 不过现在 我需要能够将数据发送到不在我的本地网络上的计算
  • 如何使用 LibGDX 制作文本按钮?

    我已经按照 youtube 上的一些教程为我的 libgdx 游戏制作按钮 但遇到了无法加载 Button pack 的问题 stage new Stage black new BitmapFont Gdx files internal f
  • React router - 将 api 数据传递给链接的组件以打开新页面

    我很难理解在这里设计路由 例如 array map each gt
  • Hibernate二级缓存示例

    我正在开发hibernate ehcache程序 Entity Table name pizza public class Pizza implements Serializable Id GeneratedValue private In