Hibernate 与 akka actor 一起工作吗?

does Hibernate work with akka actor?

我主要关心的是 ThreadLocal。 akka actor 不绑定到特定线程,因此任何线程本地存储的使用在 akka actor 上都会有问题

Hibernate 是否使用 ThreadLocal

在这种情况下它们可以共存吗?

是的。我将 Hibernate(通过 JPA 接口)与 Akka actors 一起使用。

我有两种处理多线程的方法:

  1. 如果每个 actor 更新的信息不能与其他 actor 冲突(例如,table 中的每一行永远不会被多个 actor 使用),您可以为每个 actor 创建一个实体管理器并使用它为了演员的生活。虽然,如果事务失败,最好丢弃实体管理器。
  2. 否则,在每次调用需要数据库访问的参与者(通过它的接收函数)时,创建一个新的实体管理器,开始一个事务,访问数据库,提交事务,然后关闭实体管理器。

我在生产系统中使用第一种方法运行。