我试图找到“静态/全局”的通常设计/方法是什么! Web 应用程序中的数据访问/存储,我使用的是 struts 2。 背景,我有许多要在我的 Web 应用程序中显示的表格。
问题1。
这些表只会在服务器上每天更改和更新一次,我不想访问数据库/或为每个查看表的请求加载文件。
我更愿意将表加载到某个全局内存/缓存一次(一天),每个请求都从那里获取表,而不是访问数据库。
我想这是一个常见的场景并且有一个既定的方法吗?但我现在找不到它。
对于 struts 2,ActionContext 是否是该数据的正确位置?
如果是这样,任何指向教程的链接将不胜感激。
问题2。
这些表存储在一个 XML 文件中,我使用 JAXB 对其进行解组以获取表对象以及表的列表。
对于小型应用程序来说,这还可以,但我认为对于 Web 应用程序来说,将 xml 存储为资源并将文件作为 servlet 上下文读取并解析是很麻烦的,或者是吗?
我意识到我可能会被告知将表存储到使用 dao 访问的数据库中,并使用 hibernate 来获取对象。
我只是好奇对于已存储在 XML 文件中的数据的常用方法是什么?鉴于我每天都会有新的 XML 文件。
如果问题很基本,我很抱歉,我有大量的书籍/参考材料,但这只是花了我时间来获得更高级别的设计答案。
在没有真正查看缓存选项的情况下,我会自己从数据库中获取数据,但只有在经过一段时间后才获取。
通常,您在操作范围内工作,下一个级别是会话,最全局的是应用程序。测试这一点的一个简单方法是创建一个实现 ApplicationAware 的 Action 类。然后,您可以从任何 jsp/action 获取放在那里的值...任何可以访问 ActionContext(几乎是任何地方)的地方,请参阅:http://struts.apache.org/2.0.14/docs/what-is-the-actioncontext.html http://struts.apache.org/2.0.14/docs/what-is-the-actioncontext.html
无论如何,我将实现一个基本的拦截器,它会检查新数据是否可用,并且我还没有查找它,然后加载新数据(触发此拦截器的用户可能不需要这些新数据,因此在新数据中执行此操作)线程将是一个好主意)。
这种方法增加了复杂性,因为您负责管理一些数据结构并使它们与 ORM 协作。
我这样做是为了从永远不需要再次加载的表中加载数据,并且该数据独立存在(我不需要找到它与其他表之间的关系)。这是快速而肮脏的,史蒂文斯解决方案更加强大,并且可能会在以后需要进一步性能时给您带来回报。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)