全天候使用Hibernate和多个会话

时间:2016-02-15 15:01:32

标签: java hibernate concurrency mariadb

对于我正在进行的项目,我有一个与Hibernate相关的问题。
首先是对问题的概述。

对于公共交通系统,我们每分钟收到大约600封信息,每周7天,每天24小时。 在数据库中有一个表格,其中存储了当天的所有旅程,并且所有旅程都是特定旅程必须停止的所有旅程。

  

因此,公共汽车1行驶1号航班,并在1号站,2号站和3号站停靠。

应将收到的消息中的信息添加到旅程中。因此,当到达消息到达时,在数据库中查找相应的行程,找到相应的停靠点,更新到达时间并更新数据库中的行。 这是每分钟600次。

  

因此,当公共汽车1在10:00到达1号站点时,它会发送时间戳为10:00的消息   在数据库中,对于旅程1,应添加10:00以停止1

好吧,到目前为止,这么好。但是,需要在某个时刻收集当天有效的旅程。这是一个单独的过程,它在各种表中查找所需信息,收集数据并将其存储在旅程表中。

  

所以,一个在表中创建行的过程如下:
      在旅程表中:
      [id,name]
      1,1,

     

在停靠表中:
      [id,name,journeyref]
      1,1,1       2,2,1       3,3,1

我们有一个MariaDB数据库,结合了Hibernate 4.3.6。

我们目前的实施:

当进程A(句柄传入消息进程)启动时,它会打开一个Hibernate会话,并开始使用它。它启动一个事务,从数据库中检索数据,更新行和每个x更新(在我们的例子中为100)它执行提交,刷新并启动新事务。
当进程B想要启动时,它会打开一个Hibernate会话,然后麻烦就开始了,两个会话都崩溃了,或者停止工作。
(顺便说一句,有更多的进程在数据库上工作,但只要使用不同的表,就不会出现问题。)

你们有谁知道如何解决这个问题? 较小的会话?
不同的实施方式?
其他想法?

0 个答案:

没有答案