Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 优化数据驱动的web应用程序_Hibernate_Design Patterns_Ehcache_Nosql - Fatal编程技术网

Hibernate 优化数据驱动的web应用程序

Hibernate 优化数据驱动的web应用程序,hibernate,design-patterns,ehcache,nosql,Hibernate,Design Patterns,Ehcache,Nosql,我使用Java Server Faces(JSF)构建了一个简单的web应用程序,其中我有一个带有链接的网页,当我单击该链接时,我只需转到数据库(MySQL)并获取一个项目列表,然后显示在网页中。我使用Hibernate作为ORM工具 我查询的数据库表中总共有10-15个条目,hibernate查询类似于“fromMyObject”,它返回表中的所有条目 现在,我正试图通过限制每次点击该链接时对数据库的查询数量来提高该应用程序的性能 所以我开始学习hibernate一级缓存、二级缓存和Ehcac

我使用Java Server Faces(JSF)构建了一个简单的web应用程序,其中我有一个带有链接的网页,当我单击该链接时,我只需转到数据库(MySQL)并获取一个项目列表,然后显示在网页中。我使用Hibernate作为ORM工具

我查询的数据库表中总共有10-15个条目,hibernate查询类似于“fromMyObject”,它返回表中的所有条目

现在,我正试图通过限制每次点击该链接时对数据库的查询数量来提高该应用程序的性能

所以我开始学习hibernate一级缓存、二级缓存和Ehcache。现在我对它们的工作原理有了一些基本的了解

这是我的问题

问题:假设此应用程序的用户分为n组-g1、g2、…、gn,每组有m个用户。当g1组的用户单击该链接时,我想显示特定于g1组的项目列表。基本上,当不同的用户组单击网页中的链接时,我希望为他们显示不同的项目列表。由于我想向同一组中的用户显示相同的项目列表,我想限制来自同一组的用户单击该链接时对数据库的调用。如果有人能给出他们的建议或给我一些能帮助我前进的建议,那就太好了


保存为所有用户组显示的数据的是同一个对象。对数据库中的条目(网页中显示的项目列表)进行添加、更新和删除。向用户显示的项目列表不是静态的。

您可能需要缓存结果,并根据对当前用户的检查返回结果。这可以通过在java类中使用映射以简单的方式完成。

我开始使用redis,它实际上满足了我的目的。解释redis及其使用。

所以,当我不断添加、更新和删除项目时,缓存不会变得过时吗?如果我使用一些数据结构,如地图,并将其放入应用程序范围,并将最新数据保留在地图中(只要在添加、编辑或删除地图时不断更新地图),并在用户单击该链接时返回地图,则如果组数过多,地图大小可能会变大(这可能会占用大量内存)当然,对于组号较大的不同组别,使用不同的地图可能不是一个好主意。如果我错了,请纠正我。您要实现的缓存附加了一个业务规则。我的看法是,您可能必须在业务层处理它。同意这不是一个简单的映射,因为对底层数据有频繁的写操作。此域存储模式[可能会有所帮助。您可能需要实现状态管理器来维护缓存。