Доктрина 2 Разграничение транзакций: неявное и явное - PullRequest
0 голосов
/ 20 февраля 2012

Я читаю доктрину 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 Ответ

1 голос
/ 20 февраля 2012

документы говорит:

Явное разграничение транзакций требуется, когда вы хотите включить пользовательские операции DBAL в единице работы или когда вы хотите использовать некоторых методов API EntityManager, которые требуют активного сделка. Такие методы вызовут исключение TransactionRequiredException для сообщить вам об этом требовании.

В других случаях нет разницы, и вы можете использовать любой из двух (я бы предпочел неявное, чтобы уменьшить шум).

...