对于我正在进行的项目,我有一个与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会话,然后麻烦就开始了,两个会话都崩溃了,或者停止工作。
(顺便说一句,有更多的进程在数据库上工作,但只要使用不同的表,就不会出现问题。)
你们有谁知道如何解决这个问题?
较小的会话?
不同的实施方式?
其他想法?