![](/img/trans.png)
[英]JPA.withTransaction executing other controllers method error: Global.java:39: error: 'void' type not allowed here
[英]What is the overhead for calling JPA.withTransaction() in Play! 2.x
因此,寻找如何在游戏中使用 JPA 有点让人头疼,但我最近发现您可以使用JPA.withTransaction()
在@Transactional
控制器方法之外进行事务。 不过,我认为这并非没有成本。 IE:
JPA.withTransaction( () -> {
...do some db updates...
}
使用这种方法时,究竟会发生什么? 每次调用时是否都会创建另一个EntityManager
,或者是否引入了现有的? 它只是一个创建的交易吗? 只是想了解使用它的开销是多少。
奖励问题:如果我在许多并发运行的线程上使用它,是否有更好的方法让它们都获得一些全局事务?
您应该考虑到 paly 框架具有不同的类型来管理 EntityManager 和连接: https ://www.playframework.com/documentation/2.3.x/JavaJPA
如果您正在使用
JPA.withTransaction( () -> {
...do some db updates...
}
play 框架使用单个事务创建一个新的实体管理器,该事务执行要在现场写入的内容。
其他方法可以是将@Transactional 用于控制器的操作。 通过这种方式,事务完全由框架管理,并且与正在进行的 http 请求相关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.