当前位置: 首页 > 面试题库 >

Spring:hibernate+ ehcache

陆烨烁
2023-03-14
问题内容

我正在使用hibernate的spring项目,并希望使用ehcache实现二级缓存。我看到了许多解决方法:

  1. spring-modules-cache引入了@Cacheable注释

  2. ehcache-spring-annotations一个旨在成为继任者的工具集spring-modules-cache

  3. Hibernate cache可以很好地集成到hibernate自身中,以使用例如@Cache注释进行缓存。

  4. Programmatic cache使用代理。基于注释的配置很快变得有限或复杂(例如,注释嵌套的多个级别)

就我个人而言,我认为spring-modules-cache还不够彻底,因此我可能宁愿考虑使用更积极的html" target="_blank">方法ehcache-spring- annotationsHibernate cache尽管这似乎是最完整的实现(例如,读取和写入缓存等)。

是什么促使使用哪个工具集?请分享您的缓存经验…


问题答案:

我们的项目用途选项3.我们应用注释org.hibernate.annotations.Cache的实体,我们缓存在了Ehcache,配置了Ehcache使用ehcache.xml,并启用和配置Hibernate的二级缓存在hibernate.cfg.xml

    <!-- Enable the second-level cache  -->
    <property name="hibernate.cache.provider_class">
        net.sf.ehcache.hibernate.EhCacheProvider
    </property>
    <property name="hibernate.cache.region.factory_class">
        net.sf.ehcache.hibernate.EhCacheRegionFactory
    </property>
    <property name="hibernate.cache.use_query_cache">true</property>
    <property name="hibernate.cache.use_second_level_cache">true</property>
    <property name="hibernate.cache.use_structured_entries">true</property>     
    <property name="hibernate.cache.generate_statistics">true</property>

对于大多数实体,我们使用缓存并发策略CacheConcurrencyStrategy.TRANSACTIONAL

@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)

我们的Maven项目使用Hibernate 3.3.2GA和Ehcache 2.2.0:

    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache-core</artifactId>
        <version>2.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>3.3.2.GA</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>3.3.0.ga</version>
        <exclusions>
            <exclusion>
                <groupId>net.sf.ehcache</groupId>
                <artifactId>ehcache</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-annotations</artifactId>
        <version>3.2.1.ga</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>ejb3-persistence</artifactId>
        <version>3.3.2.Beta1</version>
    </dependency>


 类似资料:
  • 问题内容: 我想用Java中的ehcache做一些我认为应该非常简单的事情,但是我花了很多时间使自己的文档感到沮丧… 将值写入磁盘持久性缓存。关掉。 重新启动并读取该值。 这是我的Java函数: 这是我的缓存配置(ehcache.xml): 即使我在第一次运行后在磁盘上看到test.index和test.data文件,此函数的输出始终是以下内容(它似乎从未从磁盘加载缓存): 找不到缓存。正在创建缓

  • 问题内容: 我正在使用hibernate处理spring项目,并希望使用ehcache实现二级缓存。我看到了许多解决方法: 引入注释 一个旨在成为继任者的工具集。 可以很好地集成到休眠本身中,以使用例如注释进行缓存。 使用代理。基于注释的配置迅速变得有限或复杂(例如,注释嵌套的多个级别) 就我个人而言,我认为还不够彻底,因此我可能更愿意考虑发展得更为积极。尽管这似乎是最完整的实现(例如,读取和写入

  • 问题内容: 我正在生产中运行大型VM,并且想在运行时了解有关我的缓存大小的更多信息。我的缓存都是基于ehache 在运行时查看单个缓存大小的最佳方法是什么。使用JMX或API 是否可以通过对CacheManager的纯Java调用来配置任何选项,或者(暂时忽略JMX)必须以大字符串构建XML配置? 问题答案: 是的,使用Ehcache,您可以配置缓存并仅通过Java代码(没有XML配置)来检索其大

  • 问题内容: 在Spring 4或Spring Boot中,有没有办法在没有xml的情况下初始化EhCache? 我注意到Spring Boot 1.0.0.RC3没有任何ehcache依赖项,但是Spring 4.0GA发行版中 提到它改进了对EhCache的支持。而且,Spring 3拥有类,但是它不再是依赖项的一部分。 编辑: Spring 4确实具有EhCache支持。您必须添加依赖项: E

  • 问题内容: 我在具有数据库后端和基于EHCache的缓存的Spring多线程Web服务上遇到缓存问题。该服务有许多客户端一次又一次地请求同一个对象,每秒有数十个请求。仅频繁请求几个对象,而不经常请求大量其他对象。对象可以每隔几分钟更改一次,因此将缓存的TTL设置为一分钟。从数据库加载对象很慢,并且至少需要几秒钟。 首先,我使用了一个简单的实现来获取对象: 检查对象是否在缓存中。 如果是,请从缓存中

  • 问题内容: 我需要做出的决定之一是在系统中使用哪种缓存框架。有这么多选择,我目前正在研究redis,ehcache和memcached。 谁能指出这三个特定框架的性能基准?还概述了它们的功能-我对缺点特别感兴趣,即。在一种情况下您会使用另一种情况。 问题答案: 这里有一个小的功能比较:http : //toddrobinson.com/appfabric/appfabric-cache-featu