如何在应用程序级别缓存复杂的Java对象

时间:2012-10-16 06:19:33

标签: java hibernate caching

我正在寻找一种在应用程序级别缓存java中复杂对象的解决方案。

例如,我想将一些数据集从数据库加载到内存,并使我的应用程序服务在加载到内存中的对象之上工作。我考虑过这个是为了提高性能。

但我想知道如何保持对象在缓存中的关系。

例如,

如果某个类别包含多个项目,那么存储该关系的最佳方法是什么。 我的想法是分别存储类别和项目,并将关系存储在其他地方。这是因为我使用了hibernate并且关联被配置为延迟加载。

请分享您的想法以解决此问题。

2 个答案:

答案 0 :(得分:1)

您确定需要在应用程序级别实现自定义缓存吗?

Hibernate有一级和二级缓存,对你来说还不够吗?考虑一下将用于将所有hibernate对象存储在自己的手写缓存中的内存量。如果它也会读写,那么该决定的共谋会给你带来更多问题而不是好处。当然,这将是车轮改造。

了解二级缓存如何在hibernate中工作。 http://www.javalobby.org/java/forums/t48846.html和其他性能调整:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/performance.html

对延迟加载的collecitons的迭代取决于您使用哪种模式来处理sesions。很好的例子:https://community.jboss.org/wiki/OpenSessionInView

答案 1 :(得分:0)

首先,如果您的目标是复杂的对象,请不要将它们缓存在内存中。随着对象数量的增加,它将显着降低性能。去寻找对象存储库的概念。您可以以任何复杂的形式存储对象,它将满足您的要求

以下技术人员结账。 noDB

JORM

如果您正在寻找缓存库,请查看注释中建议的ehcache 这里ehcache