2012-06-20 189 views
1

我有一個使用Hibernate作爲DAL的webservice - 在InnoDB中使用MySql。在多線程環境中休眠

因爲我想使Web服務調用真的很短(爲了更好的用戶體驗在客戶端)我使用2個線程與消息隊列做一些工作。

1個線程在消息中獲取userId,從DB加載用戶並獲取它的電子郵件地址併發送電子郵件給。

第二個線程是這樣使用的: Webservice調用....做一些動作。 將活動日誌添加到數據庫中。 做session.save(log); session.commit(); 現在我們用logId發送消息給線程。 收到消息 - 將新條目插入時間表(userid,logId)。會話是不同於主邏輯會話對象的會話對象。

我應該在這方面遇到問題嗎?在延遲加載?在線程中,因爲消息是在commit()之後發送給線程的?

回答

2

Webservice - >消息隊列架構非常標準,以防您不需要同步回覆Web服務。

在Web服務中,將任何想要存儲的數據存儲到數據庫中,然後消息隊列將在稍後選擇它。

不同的會話不是問題,但是如果每個線程都有一個靜態會話,則它們可能會受到會話膨脹的影響:會話緩存中堆積的對象。 更多關於:http://suryagaddipati.wordpress.com/2008/02/15/hibernate-rich-clients-and-long-running-sessions/

+0

那麼,我打電話給sessionFactory,getCurrentSession()。而在cfg文件中線程。我有麻煩了嗎? – user1365799