0

我目前正在使用 Spring 和 Hibernate。目前,如果我从客户端进行创建对象调用(例如),则会在服务器端的服务存根上发出请求。服务调用必须创建一个新的休眠会话工厂,获取会话,然后进行事务。问题是每次都会发生这种情况,因此需要重新创建会话工厂才能使用。由于创建该工厂需要付出代价,因此这似乎非常浪费并且影响性能。

我想做的是重用一个会话工厂,例如,跨客户端或多个客户端进行的不同服务调用。问题是我不知道该怎么做,因为服务器端功能的入口点是服务调用。我知道我必须以某种方式在服务器端保存状态,以便不同的调用可以访问同一个会话工厂。我知道保持状态等的可伸缩性问题,但必须有一种方法可以重用以前创建的对象。

我的问题是如何使用 Spring 执行此操作(我应该使用 Session bean 还是 HttpSession)?容器是否可以在启动时设置这些东西,还是必须等待服务请求进入?

我大部分是Spring新手,只是我不了解Web服务角色吗?

提前致谢。

4

1 回答 1

0
  1. 你的是典型的 MVC场景,由 GWT+MVP 实现。根据您的描述,您似乎在每次通话时都创建会话工厂,这显然不是标准做法。
  2. 会话工厂只创建一次,每个请求都在会话工厂创建的不同会话中执行。
  3. 使用 Spring,典型的方法是使用spring 布线和 hibernate配置会话工厂。此配置仅在应用程序启动时加载一次。
  4. 在每个服务请求上,从 bean-container 获取 session-factory 的引用(而不是每次都创建它)并从中创建会话以进行数据库操作。
  5. 查看这个使用 GWT+MVP+Spring+MyBatis 的项目。我了解您使用 Hibernate 而不是 MyBatis,但这将作为此类项目的参考。
于 2012-09-04T15:25:45.240 回答