【发布时间】:2011-09-03 06:00:27
【问题描述】:
嗨,在我的应用程序中,我有几个小表,我在服务器启动时将它们全部缓存在 Map 中。我想通过 Ecache + hibernate 组合实现相同的功能
我的班级看起来像
@Entity
@Table(name = "Order")
@NamedQueries
({
@NamedQuery(name="Order.findBySource",
query="from Order a where a.source = :source"),
@NamedQuery(name="Order.findByAll",
query="from Order"),
@NamedQuery(name="Order.findByPrioritySource",
query="from Order a where a.priority = :priority and a.source = :source"),
@NamedQuery(name="Order.findByPriority",
query="from Order a where a.priority = :priority"),
@NamedQuery(name="Order.findByWhenModified",
query="from Order a where a.whenModified = :whenModified")
})
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Order implements java.io.Serializable {
private String source;
private long priority;
private Date whenModified;
}
这个订单表几乎没有 10 个条目,我想一直将此表保存在内存中。 任何见解我该如何实现这一目标?
我触发上述命名查询以获取订单。当我触发这个查询时,我不想一次又一次地去数据库,所以在 ecache.xml 中我需要输入这个类吗?或者我需要在 ecache.xml 中缓存这些命名查询?
是否可以通过 Ehcache 复制 Map 实现。这样我就可以通过从缓存中指定 ID 来获取对象,而无需一次又一次地访问数据库?
【问题讨论】:
标签: hibernate caching orm jpa-2.0 ehcache