gpt4 book ai didi

java - hibernate查询缓存示例

转载 作者:行者123 更新时间:2023-12-01 11:29:44 27 4
gpt4 key购买 nike

我有以下映射实体:

@Table(uniqueConstraints = @UniqueConstraint(columnNames = { "eKey-field-1", "eKey-field-2", "eKey-field-3" }))
class EntityMapped {
@Id
@GeneratedValue...
Long Id;

@Embedded
EntityKeyMapped eKey;

没有更新,也没有删除。如果给定的 eKey 不安全,则会添加新记录。

选择查询非常简单,但每天并行执行多达 1+ Mln 查询(有时会添加新记录)。所以我想以某种方式缓存它。

在道中我看到类似的东西:

return (EntityMapped) getSession().createCriteria(EntityMapped.class).add(Example.create(example)).uniqueResult();

我正在考虑缓存此请求的最佳方法。我认为自动取款机:

return (EntityMapped) getSession().createCriteria(EntityMapped.class).add(Example.create(example)).setCacheable(true).uniqueResult();

但对于这种情况,也许有更好(更简单)的缓存方法?

最佳答案

您正在以正确的方式启用缓存。这是 Hibernate 团队设计的方式。

如果您使用 spring (或 com.googlecode.ehcache.annotations 等),您可以通过在方法上添加注释来启用缓存。但这将在 hibernate 状态之外。

当使用纯 hibernate 时,您的解决方案是正确的。

需要记住的一件事是,您可以启用缓存并设置适当的区域来使用:

return (SecurityMapped) getSession()
.createCriteria(SecurityMapped.class)
.add(Example.create(example))
.setCacheable(true)
.setCacheRegion("myregion") // here you can choose region
.uniqueResult();

然后在您的缓存提供程序配置文件中,您可以配置不同的区域。

例如,在 EhCache 配置中,您可以这样设置“myregion”:

<ehcache ...>

<cache name="myregion"
maxElementsInMemory="1000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="7200"
overflowToDisk="false"
memoryStoreEvictionPolicy="LFU"/>

</ehcache>

关于java - hibernate查询缓存示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30510248/

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