`
getianyu2008
  • 浏览: 2508 次
  • 性别: Icon_minigender_1
  • 来自: 河南
最近访客 更多访客>>
社区版块
存档分类
最新评论

hibernate中使用分布式ehcache

阅读更多

最近没什么事,研究了下分布式缓存Ehcache.

一、下载

    从terracotta.org上下载terracotta-3.7.5-installer.jar,然后使用java -jar命令来安装它。

在安装目录的bin目录terracotta-3.7.5\bin下运行start-tc-server.bat文件来启动terracotta

 

二、客户端:

需要的JAR包:

在terracotta安装目录中找到terracotta-3.7.5\ehcache\lib\下的文件:

ehcache-core-2.6.6.jar(建议不要使用与terracotta不匹配的ehcache版本,如ehche-core-2.7.0,否则可能客户端代码出现异常)

ehcache-terracotta-2.6.6.jar

在terracotta安装目录中找到common\terracotta-toolkit-1.6-runtime-5.5.0.jar

然后加上日志包:slf4j-api、slf4j-log4j、log4j

 

配置文件:

log4j.properties

ehcache.xml

<cache name="terracottaCacheTest"

    maxEntriesLocalHeap="1000"

    eternal="false"

    timeToIdleSeconds="3600"

    timeToLiveSeconds="1800"

    overflowToDisk="false">

    <terracotta/>

</cache>

 

 

测试类:

publicclass TerracottaExample

{

    CacheManager cacheManager = new CacheManager();

 

    public TerracottaExample()

    {

       Cache cache = cacheManager.getCache("terracottaCacheTest");

       int cacheSize = cache.getKeys().size();

       cache.put(new Element("" + cacheSize, cacheSize));

       for (Object key : cache.getKeys())

       {

           System.out.println("Key:" + key+"value:"+cache.get(key).getObjectValue());

       }

       cacheManager.shutdown();

    }

 

    publicstaticvoid main(String[] args) throws Exception

    {

       new TerracottaExample();

    }

}

 

三、在Hibernate中使用分布式二级缓存

加入hibernate4.2.0Jar

加入mysql-connector-java-5.1.24-bin.jar

添加Hibernate.cfg.xml文件:如下

<session-factory>

    <!-- SQL dialect -->

    <property name="hibernate.dialect">

       org.hibernate.dialect.MySQL5InnoDBDialect

    </property>

    <!-- Database connection settings -->

    <property name="connection.driver_class">

       com.mysql.jdbc.Driver

    </property>

    <property name="connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8</property>

    <property name="connection.username">root</property>

    <property name="connection.password">123456</property>

    <property name="hbm2ddl.auto">update</property>

    <property name="javax.persistence.validation.mode">none</property>

 

    <!-- JDBC connection pool (use the built-in) -->

    <property name="connection.pool_size">1</property>

 

    <property name="hibernate.cache.use_second_level_cache">true</property>

    <property name="hibernate.cache.use_query_cache">true</property>

    <property name="hibernate.cache.region.factory_class">

       org.hibernate.cache.ehcache.EhCacheRegionFactory

    </property>

    <property name="jdbc.batch_size">50</property>

 

    <!-- Echo all executed SQL to stdout -->

    <property name="show_sql">true</property>

    <property name="current_session_context_class">thread</property>

    <!-- Names the annotated entity class -->

    <mapping class="bean.Student"/>

</session-factory>

 

创建Bean

@Entity

@Table(name="student")

@Cache(usage=CacheConcurrencyStrategy.READ_WRITE,region="terracottaCacheTest")//这里的区域仍然使用terracottaCacheTest,hibernate操作数据时,可以查看此缓存区域中是否有加入了缓存中。

publicclass Student implements Serializable

{

    privatestaticfinallongserialVersionUID = -2482463021057396397L;

    privateintid;

    private String name;

//省略getset方法

}

 

测试类

 

Configuration cfg=new Configuration().configure();//加载配置文件hibernate.cfg.xml

ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();//ServiceRegistryBuilder通过配置文件的参数来建立相应的ServiceRegistry!

       SessionFactory sessionFactory =cfg.buildSessionFactory(serviceRegistry);//建立SessionFactory

      

       Session session=sessionFactory.getCurrentSession();

       Transaction transaction=session.beginTransaction();

       try{

           Student student=(Student)session.get(Student.class, 1);

           System.out.println(student.getName());

          

           transaction.commit();

       }catch (Exception e) {

           transaction.rollback();

       }//    finally{//事务在提交或回滚的时候会检测Session是否关闭,如果没有则

//         if(session!=null&&session.isOpen())

//         {

//            System.out.println("关闭Session……");

//            session.close();

//         }

//     }     

      

       sessionFactory.close();

然后运行TerracottaExample这个类,这会发现通过hibernate使用分布式ehcache已经生效!

下面是打印缓存中的内容 

Key:bean.Student#1value:org.hibernate.cache.ehcache.internal.strategy.AbstractReadWriteEhcacheAccessStrategy$Item@a03a12

 

 国内首套免费的《大数据技术(Hadoop)视频教程》:

http://www.youku.com/playlist_show/id_19172734.html

分享到:
评论

相关推荐

    hibernate+ehcache

    【标题】:“Hibernate + Ehcache 整合使用详解” 【描述】:“Hibernate 是一款流行的 Java 持久层框架,而 Ehcache 是一个高效的分布式内存缓存系统。将两者结合,能够极大地提升应用的性能,减少数据库的负载,...

    hibernate所需的ehcache的相关jar包,一共3个jar包

    在Java的持久化框架Hibernate中,缓存机制是提高数据访问效率的重要手段。Ehcache是一种广泛使用的开源...在实际开发中,理解并熟练掌握Hibernate和Ehcache的结合使用,对于提升系统的响应速度和用户体验具有重要意义。

    在Spring+Hibernate集成环境中使用EhCache缓存

    最后,我们在代码中使用缓存。Spring提供了`@Cacheable`和`@CacheEvict`注解,可以分别用于将方法的返回结果存入缓存和清除缓存。例如: ```java @Service public class MyService { @Cacheable(value = "myCache...

    Ehcache分布式缓存与其在spring中的使用

    ### Ehcache分布式缓存及其在Spring中的应用 #### 一、Ehcache概述与原理 Ehcache是一款高效且轻量级的纯Java缓存框架,由于其出色的性能和易于集成的特点,在Java开发中有着广泛的应用。作为Hibernate的默认缓存...

    hibernate+ehcache jar包

    - 添加Ehcache相关jar包到项目类路径,如题目中提到的`ehcache-core-2.6.8.jar`和`hibernate-ehcache-4.1.0.Final.jar`。 - 在Hibernate配置文件(如`hibernate.cfg.xml`)中启用二级缓存并指定Ehcache为缓存提供者...

    hibernate整合ehcache的jar包.zip

    通过配置,Hibernate可以在查询数据库之前先查看Ehcache中是否有所需数据,如果存在,就直接返回,无需再次访问数据库,这样显著减少了数据库的负载。 **4. 整合步骤** - **添加依赖**:在项目中引入Ehcache的jar包...

    Spring boot hibernate ehcache maven 整合源码

    总的来说,这个项目展示了如何使用Spring Boot搭建一个基于Hibernate的数据访问层,利用Ehcache实现缓存功能,同时借助Maven进行项目管理和构建。开发者可以参考这个源码,学习如何在自己的项目中整合这些技术,提升...

    spring,spring mvc,hibernate,ehcache JavaWeb后台框架

    在Java Web开发领域,Spring、Spring MVC、Hibernate和Ehcache是四个非常关键的框架,它们共同构建了一个强大且高效的后台开发环境。下面将详细解释这些框架的核心功能和使用方式。 1. **Spring框架**:Spring是...

    spring、 spring mvc、 hibernate、 ehcache Java后台框架

    Ehcache还可以与Spring集成,方便地在Spring应用中使用缓存功能。 在实际项目中,这四个框架的整合使用能够构建出高性能的Java后台系统。Spring作为基础架构,负责管理和协调各个组件;Spring MVC处理HTTP请求,...

    hibernate+ehcache代码示例

    在IT行业中,Hibernate和Ehcache是两个非常重要的技术组件,尤其在企业级Java应用开发中扮演着核心角色。Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,而Ehcache则是一种高效的分布式缓存...

    spring,spring mvc,hibernate,ehcache Java后台框架

    Spring,Spring MVC,Hibernate,以及Ehcache是Java开发中常用的四大框架,它们共同构建了高效、稳定的后台应用体系。 Spring框架是Java企业级应用的事实标准,它提供了一个全面的编程和配置模型,用于简化企业级...

    Hibernate + EhCache 实现数据缓存的处理

    - 配置EhCache:在Hibernate配置文件(hibernate.cfg.xml)中,添加EhCache插件的配置,指定缓存提供者为EhCache,并设置相关的缓存配置。 - 引入EhCache库:在项目中引入EhCache的jar包,如`lib`目录下的相关文件。...

    Ehcache(2): Ehcache实例在Eclipse中的配置 改进

    本篇文章将详细讲解如何在Eclipse集成开发环境中配置Ehcache,以配合Hibernate进行使用,从而提升数据访问效率。首先,我们需要了解Ehcache的基本概念和工作原理。 Ehcache的核心功能是提供内存缓存服务,它分为三...

    Ehcache缓存

    在Java世界中,尤其是在持久化框架如Hibernate的使用中,Ehcache扮演了至关重要的角色。由于数据库查询通常会成为系统性能瓶颈,缓存技术如Ehcache能显著提升应用程序的响应速度。 **Hibernate与Ehcache的整合** ...

    cache/ehcache缓存使用

    Ehcache支持本地缓存和分布式缓存,可以方便地集成到Spring、Hibernate等框架中。其核心特性包括内存和磁盘存储、缓存过期策略、缓存分区、缓存预热等。 在Java应用中,我们可以使用Ehcache进行对象的存储和读取。...

    EHcache相关jar下载及案例

    在Java应用程序中,特别是那些基于Hibernate或MyBatis的持久层框架中,EHcache作为二级缓存工具,能够显著提升数据访问速度,减少数据库负载。 在Hibernate中,一级缓存是Session级别的,当同一个Session内的多次...

    ehcache

    在 Hibernate 中,Ehcache 可以作为二级缓存提供服务,将查询结果存储在缓存中,避免重复查询数据库。只需在 Hibernate 配置文件中指定 Ehcache 作为二级缓存提供者即可。 ## 5. Ehcache 的分布式缓存 Ehcache ...

    struts2+hibernate+ehcache二级缓存

    在提供的压缩包文件中,可能包含了Struts2、Hibernate和Ehcache的配置示例,以及相关的代码片段,用于演示如何集成和使用这些组件实现二级缓存。开发者可以通过分析这些文件,了解具体的实现细节,并在自己的项目中...

    spring+ehcache实例demo

    软件仍然是开源,但一些新的主要功能(例如,快速可重启性之间的一致性的)只能在商业产品中使用,例如Enterprise EHCache and BigMemory。,维基媒体Foundationannounced目前使用的就是Ehcache技术。

    Hibernate4二级缓存实例(源码)

    通过深入理解并实践这个源码实例,开发者可以掌握如何在实际项目中有效利用Hibernate的二级缓存,以及如何结合memcached实现高效的分布式缓存策略。这不仅能够提升应用程序的性能,还能降低对数据库的压力,是现代...

Global site tag (gtag.js) - Google Analytics