Hibernate 与 akka actor 一起工作吗?
does Hibernate work with akka actor?
我主要关心的是 ThreadLocal
。
akka actor 不绑定到特定线程,因此任何线程本地存储的使用在 akka actor 上都会有问题
Hibernate 是否使用 ThreadLocal
?
在这种情况下它们可以共存吗?
是的。我将 Hibernate(通过 JPA 接口)与 Akka actors 一起使用。
我有两种处理多线程的方法:
- 如果每个 actor 更新的信息不能与其他 actor 冲突(例如,table 中的每一行永远不会被多个 actor 使用),您可以为每个 actor 创建一个实体管理器并使用它为了演员的生活。虽然,如果事务失败,最好丢弃实体管理器。
- 否则,在每次调用需要数据库访问的参与者(通过它的接收函数)时,创建一个新的实体管理器,开始一个事务,访问数据库,提交事务,然后关闭实体管理器。
我在生产系统中使用第一种方法运行。
我主要关心的是 ThreadLocal
。
akka actor 不绑定到特定线程,因此任何线程本地存储的使用在 akka actor 上都会有问题
Hibernate 是否使用 ThreadLocal
?
在这种情况下它们可以共存吗?
是的。我将 Hibernate(通过 JPA 接口)与 Akka actors 一起使用。
我有两种处理多线程的方法:
- 如果每个 actor 更新的信息不能与其他 actor 冲突(例如,table 中的每一行永远不会被多个 actor 使用),您可以为每个 actor 创建一个实体管理器并使用它为了演员的生活。虽然,如果事务失败,最好丢弃实体管理器。
- 否则,在每次调用需要数据库访问的参与者(通过它的接收函数)时,创建一个新的实体管理器,开始一个事务,访问数据库,提交事务,然后关闭实体管理器。
我在生产系统中使用第一种方法运行。