标签: second-level-cache

为nHibernate选择哪个二级缓存?

我有一个使用WCF创建的数据服务,内部使用nHibernate.此WCF数据服务由使用Tcp Channel部署在Web Server上的Asp.Net应用程序使用.

为了提高nHibernate数据服务的性能,我想实现nHibernate二级缓存.哪个二级缓存提供商在这个场景中会很好?由于SysCache使用Asp.net缓存,我可能无法在WCF服务中使用它?

上述WCF数据服务可以在不同服务器上具有多个实例,以提高应用程序的可伸缩性.

nhibernate wcf caching second-level-cache

5
推荐指数
1
解决办法
1763
查看次数

使用AppFabric进行NHibernate二级缓存

有没有人使用AppFabric进行二级缓存?

我知道这是遵循同样的API为速度(nhibernate.caches.velocity),但想知道是否有人已经有了使用它的一些生产经验,如果他们知道任何特别的技巧或问题的?

.net nhibernate second-level-cache appfabric

5
推荐指数
1
解决办法
2156
查看次数

JPA2.0支持自定义用户类型和二级缓存

我正在尝试决定是否从Hibernate全身使用转为使用JPA2.0,从而提供便携式设备.
1. JPA2.0支持自定义用户类型吗?
2.我正处于实现Terracotta二级缓存的边缘,Hibernate主要考虑其聚类能力.我想,但我实际上并不知道,这JPA2.0也定义了二级缓存提供程序的规范.如果我是对的,是否Terracotta实施了它?(如果有人能指出我的入门Terracotta,JPA我会很感激).

感谢提前,
Ittai

java hibernate terracotta second-level-cache jpa-2.0

5
推荐指数
1
解决办法
2821
查看次数

设置hibernate二级缓存

我是hibernate和spring的新手,我尝试使用hibernate二级缓存.但它似乎不起作用.我有一个以下测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext.xml" })
@TransactionConfiguration
@Transactional
public class CacheTest extends AbstractTransactionalJUnit4SpringContextTests
{   
    @Test
        public void testCache1() 
        {
        System.out.println("Running testCache1");
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        MutableDAO<AppUser> appUserDAO = new MutableDAOImpl<AppUser>(AppUser.class, (SessionFactory) ctx.getBean("OnMediaSessionFactory"), 10);
        assertNotNull("AppUser DAO is null.", appUserDAO);

        SessionFactory sessionFactory = (SessionFactory)ctx.getBean("OnMediaSessionFactory");
        long numberOfUsers = appUserDAO.countAll();

        System.out.println("Number of rows :" + numberOfUsers);
        final String cacheRegion = AppUser.class.getCanonicalName();

        SecondLevelCacheStatistics settingsStatistics = sessionFactory.getStatistics().
            getSecondLevelCacheStatistics(cacheRegion);
        StopWatch stopWatch = new StopWatch();
        stopWatch.start();
        appUserDAO.findAll();
        stopWatch.stop();
        System.out.println("Query time : " + stopWatch.getTotalTimeSeconds());
        System.out.println(settingsStatistics);
     } …
Run Code Online (Sandbox Code Playgroud)

spring hibernate second-level-cache

5
推荐指数
1
解决办法
2660
查看次数

NHibernate Azure AppFabric缓存

有没有尝试过对Azure AppFabric Cache使用NHibernate Velocity L2缓存提供程序?如果是这样,你发现了什么?

另外,我们使用SQL Azure来存储我们的数据.

nhibernate azure second-level-cache azure-appfabric azure-sql-database

5
推荐指数
1
解决办法
1198
查看次数

将ehcache.xml外部化以使用外部属性文件中的属性

我想将属性占位符放在ehcache.xml文件中(如$ {}),以便可以在运行时从外部属性文件(.properties)替换值.就像是:

ehcache.xml(在类路径中):

 <defaultCache
maxElementsInMemory="20000"
eternal="false"
timeToIdleSeconds="${default_TTI}"
timeToLiveSeconds="86400"
overflowToDisk="true"
... />
Run Code Online (Sandbox Code Playgroud)

ehcache.properties(在war/classpath之外):

...
default_TTI=21600
...
Run Code Online (Sandbox Code Playgroud)

目的是能够更改缓存配置,而无需重建应用程序.Spring的PropertyPlaceHolder只适用于我不想要的ehcache的Spring bean definiton(需要将ehcache.xml保存为文件)

这里有类似的帖子,但没有任何东西让我解决.我一直在寻找一个星期!!

我使用Spring 2.5.6,Hibernate 3.2.6和Ehcache 2.4.6

任何帮助或想法是非常Appriciated !!

非常感谢,Tripti.

java spring hibernate ehcache second-level-cache

5
推荐指数
1
解决办法
7650
查看次数

Hibernate Collection缓存:如何使用?

我有两个实体 Book 和 Author。本书有作者的集合。我使用二级缓存来保存 Book 实体及其作者。调试时,我可以看到putForExternalReadBook 实例和集合中的每个作者都在发生。但是当我find(Book.class, ISBN)再次调用方法时,它只为书使用缓存,而每次从数据库中检索作者的集合。每次作者集合都放在二级缓存中。请让我知道是否需要更改缓存访问策略以进行收集。我正在使用 Jboss 6.0 Infinispan 5. 和 postgres 9 DBMS。

这是我的代码

package bookentity.ejb;
Run Code Online (Sandbox Code Playgroud)

/* * 要更改此模板,请选择工具 | 模板 * 并在编辑器中打开模板。*/

import java.io.Serializable;
import java.util.ArrayList;
import javax.persistence.Cacheable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.ManyToMany;
import javax.persistence.JoinTable;
//import javax.persistence.JoinColumns;
import javax.persistence.JoinColumn;
import java.util.Collection;
import java.util.List;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
//import javax.persistence.inv
import javax.persistence.OneToMany;



@Entity
@Cacheable
@Table(name = "BOOK")
@NamedQueries({@NamedQuery(name="findBookByAuthorName",query="SELECT b FROM Book b,            Author a …
Run Code Online (Sandbox Code Playgroud)

collections hibernate second-level-cache infinispan

5
推荐指数
1
解决办法
6430
查看次数

为什么在这个例子中没有nhibernate从缓存中检索?

我试图弄清楚如何使用nhibernate缓存一个连接的查询,它似乎不正常工作

这是我的代码:

   public CacheTestViewModel GetCacheTestViewModel()
    {
        var vm = new CacheTestViewModel();
        var session = Repository.Session;
        using (var tx = session.BeginTransaction())
        {
            vm.Projects = Repository.Session.Query<Project>()
                .FetchMany(r=>r.ProjectApplications)
                .ThenFetch(r=>r.Application)
                .Cacheable().CacheMode(CacheMode.Normal)
                .ToList();

            tx.Commit();
        }
        return vm;
    }
Run Code Online (Sandbox Code Playgroud)

我一遍又一遍地运行它似乎是从二级缓存加载Project对象但它仍然返回到db来查询ProjectApplication对象,这很慢

是否有可能nhibernate缓存整个查询,以便从缓存中返回整个图形?

注意:我确实打开了查询缓存以及使用Cache.ReadWrite()设置的所有实体

这是我的缓存配置

       return configuration
            .Mappings(m => m.FluentMappings.AddFromAssemblyOf<ApplicationMap>().Conventions.Add(typeof(Conventions)))
            .ExposeConfiguration(
                c => {
                   // c.SetProperty("proxyfactory.factory_class", proxyFactory);
                    c.SetProperty("cache.provider_class", "NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache");
                    c.SetProperty("cache.use_second_level_cache", "true");
                    c.SetProperty("cache.use_query_cache", "true");
                    c.SetProperty("expiration", "86400");
                })
            .BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

nhibernate second-level-cache

5
推荐指数
1
解决办法
307
查看次数

二级缓存收集状态有时与数据库不同步

我们使用EhCache的2级高速缓存(4.3.8.Final中)Hibernate4.3.8.Final)用于查询(仅在主要读取表),实体之间的实体与集合。

所以你可以说二级缓存被大量用于优化目的。

到目前为止,我们从未遇到过任何大问题......

我们关于相关实体的持久性模型基本上如下所示:

  • 首先,我们有 2 个实体,它们在自然父子关系中具有双向映射:

    @Entity
    @Table(...)
    @Cacheable
    @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
    public class Parent extends BaseEntity {
        @Id
        private long id;
    
        @OneToMany(mappedBy="parent", fetch=FetchType.LAZY, cascade = CascadeType.REMOVE)
        @Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
        private Set<Child> children;
    
        // getters and setters
    }
    
    @Entity
    @Table(...)
    @Cacheable
    @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
    public class Child extends BaseEntity {
        @Id
        private long id;
    
        @ManyToOne(fetch = FetchType.LAZY, optional = false)
        @JoinColumn(name = "parent_id", nullable = false)
        private Parent parent;
    
        // getters and setters …
    Run Code Online (Sandbox Code Playgroud)

java hibernate jpa ehcache second-level-cache

5
推荐指数
0
解决办法
397
查看次数

Infinispan JPA二级缓存默认值

我正在尝试将Infinispan配置为hibernate二级缓存.一切都很好,但我想调整默认配置,即所有缓存共享的值.

缓存是用于注明实体自动创建的@Cache,我可以通过一个在对其进行自定义一个infinispan.xml通过<distributed-cache-configuratoin>.但是,我希望所有这些缓存都有默认值(例如驱逐策略).

另一件事是,我想将所有这些生成的缓存标记为"分布式"(默认情况下它们是"本地").

这是我的一个例外infinispan.xml:

<cache-container default-cache="default" statistics="true">
    <transport stack="external-file" />
    <!-- Configuring specifics for the User entity. How to do it globally? -->
    <distributed-cache-configuration name="user" statistics="true" />
</cache-container>
Run Code Online (Sandbox Code Playgroud)

我该怎么做这些事情?

java hibernate jpa second-level-cache infinispan

5
推荐指数
1
解决办法
1613
查看次数