Hibernate in multithreaded env

时间:2012-06-20 13:39:11

标签: multithreading hibernate innodb

我有一个使用Hibernate作为DAL的web服务 - 使用MySql和InnoDB。

由于我想让webservice调用真的很短(为了在客户端提供更好的用户体验),我使用2个带有msg队列的线程来完成一些工作。

1个帖子在邮件中获取userId,从数据库加载用户并获取电子邮件地址并发送电子邮件到。

第二个线程使用如下: Web服务调用....做一些动作。 将ActivityLog添加到数据库中。 做session.save(日志); session.commit(); 现在我们使用logId向线程发送消息。 收到消息 - 在时间轴表中插入新条目(userid,logId)。 Session是与主逻辑会话对象不同的会话对象。

我应该有这个问题吗?在延迟加载?在线程中,因为在commit()之后将消息发送到线程?

1 个答案:

答案 0 :(得分:2)

Web服务 - >如果您不需要对Web服务进行同步回复,则消息队列体系结构非常标准。

在Web服务中,将您想要的任何内容存储到数据库中,消息队列将在以后选择它。

不同的会话不是问题,但如果每个线程都有一个静态会话,它们可能会受到会话膨胀的影响:在会话缓存中堆积的对象。 更多相关信息:http://suryagaddipati.wordpress.com/2008/02/15/hibernate-rich-clients-and-long-running-sessions/