学说2交易划分:隐性与显性

时间:2012-02-20 07:40:39

标签: transactions doctrine-orm

我正在阅读学说2文档,并对交易划分有疑问。以下两段代码之间是否有任何区别(显然除了语法之外)?或者这只是两种完全相同的方式(即隐式和显式)。什么是首选方法/最佳实践(隐式或显式)?

隐式:

// $em instanceof EntityManager
$user = new User;
$user->setName('George');
$em->persist($user);
$em->flush();

显式:

// $em instanceof EntityManager
$em->transactional(function($em) {
    $user = new User;
    $user->setName('George');
    $em->persist($user);
});

1 个答案:

答案 0 :(得分:1)

docs说:

  

当您想要包含时,需要显式事务划分   在工作单元中或当您想要使用时自定义DBAL操作   EntityManager API的一些需要活动的方法   交易。这样的方法会抛出TransactionRequiredException   告诉你这个要求。

在其他情况下没有区别,你可以使用两种中的任何一种(我更喜欢暗示减少噪音)。