Java Web应用程序内存处理

问题描述:

我有一个Java Web应用程序,它使用Hibernate将数据存储到数据库中并检索它们。Java Web应用程序内存处理

我目前使用的策略是:在开始菜单上的应用程序加载一切从数据库中,并保存/更新他们的数据库作为用户与应用程序交互。

我也做过的事情是跟踪作为业务逻辑的一部分的每个用户的交易历史记录。 (所以这个交易历史记录都是在应用程序启动时加载的)。

我能看到的问题是我不应该加载所有用户的所有交易历史记录,因为如果有很多交易历史记录,并且用户可能不一定需要查看它们,那可能是很多内存都用完了,所以效率不高。

我在想,如果有什么类似于PHP脚本可以做,这是刚刚查询数据库,只有当用户请求查看交易历史,所以它不使用服务器资源。 (除了查询数据库)还有什么建议/意见关于我现在面临的问题。

谢谢。

+1

为什么不只是在需要给定信息时查询Hibernate? – 2012-01-04 06:55:52

+0

其实,是的。那真是太傻了。 但是,举例来说,我有一大块数据,并且它经常需要,那么将它保存在内存上更好吗?在这种情况下做什么? – HeavenAgain 2012-01-04 07:00:24

+0

告诉休眠,让它管理缓存。 – 2012-01-04 07:03:58

当你需要一个给定的信息并让Hibernate管理把它放回数据库时查询Hibernate。这将允许Hibernate管理缓存。

请注意,使用Hibernate时,应让Hibernate完全管理数据。不要使用原始SQL自行添加或更改数据。

如果您使用的是现代的容器,你应该考虑迁移到JPA,因为它是Java EE容器的标准,让你当你需要扩展更加灵活。 JPA非常接近Hibernate,但它是一个API,而不是一个实现,所以你有多个可供选择的。

+0

也许我没有正确理解Hibernate。我每次更新对象/实体属性时都会按照此顺序打开,更新,提交和关闭会话。我认为这会阻止数据库与程序的当前状态不同步。但是你所建议的是让会话保持打开状态,以便Object在用户关闭会话/注销时保持不变并更新,提交和关闭会话? – HeavenAgain 2012-01-04 07:30:21

+0

我对Hibernate并不熟悉。 Hibernate文档建议你在这种情况下做什么? – 2012-01-04 07:32:08

+0

我其实只是看了这个,有两种方法来解决这个问题,一个是我目前使用的;每个操作的会话,另一个是每个请求的会话。我实际上需要研究这个以获得更好的理解。 (虽然,对我而言,每个操作的会话都是有意义的,因为我需要保持数据库与应用程序同步。但是,我可以看到,我没有利用Hibernate提供的持久性) 同时,感谢您的回答和您的帮助! – HeavenAgain 2012-01-04 08:10:48

为什么不为每个请求查询hibernate进来并在响应后发布?这是一种常见的方法。