Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala参与者和持久性上下文_Scala_Jpa - Fatal编程技术网

scala参与者和持久性上下文

scala参与者和持久性上下文,scala,jpa,Scala,Jpa,是否有可能在每次scala actor动作时将持久性上下文注入到它中?我有一个双Java/Scala spring应用程序,我使用spring注释将我的Java服务和方法标记为事务性的。我希望在scala actors中使用类似的功能。也就是说,参与者应该在每次响应消息时在单个事务中进行操作。有人尝试过类似的东西吗?或者有类似的例子吗?为什么不通过注入参与者自身的Dao

是否有可能在每次scala actor动作时将持久性上下文注入到它中?我有一个双Java/Scala spring应用程序,我使用spring注释将我的Java服务和方法标记为事务性的。我希望在scala actors中使用类似的功能。也就是说,参与者应该在每次响应消息时在单个事务中进行操作。有人尝试过类似的东西吗?或者有类似的例子吗?

为什么不通过注入参与者自身的
Dao
封装持久访问呢。通过这种方式,您可以拥有一个与持久性机制本身解耦的持久性参与者:

class DaoActor(val dao: Dao) extends Actor {

   def act() = {
     loop {
       react {
         case SaveTrade(trade) => dao.save(trade)
         case ReadTrades(date) => dao.lookup(date)           }
     }
   }
}

此外,您的
Dao
可以用Java编码,因此您可以在那里添加
@Transactional
注释。

我想我必须使用上述解决方案的某种形式。我需要一个服务,可以将其实例化为Spring上下文的一部分,标记为
@Transactional
,以便Spring正确地代理该对象。然后,我的参与者将被注入对服务的引用,并将调用该服务来执行实际工作。这个解决方案很好,可以工作,但我希望有一个更以Scala为中心的解决方案。你不能用@Transactional来装饰你的Scala吗?Scala确实支持注释,尽管不是嵌套的。我对此不是100%,但我不确定Scala是否支持与Java相同级别的注释(例如嵌套)。也就是说,定义了隔离级别等的简单的
事务性
声明可能很有效