有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hibernate:使用单例会话写入日志(无刷新)

我正在考虑使用单例会话为我们的应用程序编写请求日志

通常我会将Hibernate与Lifestyle PerWebRequest一起使用,但在我的特定情况下,没有Http上下文(我们使用socket线程来侦听请求)。但是,我注意到,因为我们只使用会话来记录日志,所以我也可以使用单例休眠会话

即使有多个线程运行该会话,所有请求日志也只会在会话中累积起来,并在Hibernate感到舒适时保存。没有必要在日志写入后立即读取日志,这样就可以了

代码如下所示:

// Got socket request
// Doing some stuff here, saving to a legacy database (cannot use Hibernate with this one)

var logging = new Message(info);
loggingService.save(logging); // FYI: in case it fail, we don't want to roll back the previous work

我唯一担心的是,当我们想要在多台机器上运行两个程序来进行负载平衡时,这可能会是一个问题。我认为,在这种情况下,我们必须进行一些锁定/同步,以避免可能的冲突(尽管我现在想不出任何冲突)

单例会话是否可以使用它,或者有一些我没有想到的可能影响


共 (1) 个答案

  1. # 1 楼答案

    利用Singleton会话这个“绝妙”的想法花费了我好几天的时间来收拾残局。起初,它产生了良好的结果,但随后出现了许多不可预测的错误

    现在我可以确认会话不是为这样的事情设计的。 我选择删除这个问题,然后决定把它留给有同样“辉煌时刻”的人

    TL;博士:我建议大家坚持“好的老方法”:一个线程一个会话