转载自我的blog
事务划界
“事务划界”就是定义你的事务边界的。正确地进行事务划界非常重要,如果做的不好就会影响你的应用性能。许多数据库以及数据库抽象层(比如PDO)默认工作在自动提交(auto-commit)模式下,该模式下每条SQL语句都被包裹在一个单独的小事务中。所以如果你没有主动进行事务控制,很快就会造成应用的性能下降,因为事务的开销可不便宜哦。
在绝大多数情况下,Doctrine 2都为你做了合理的事务划界:所有的写操作(INSERT/UPDATE/DELETE)都被放到队列中,直到 EntityManager#flush()
被调用,这些操作都被囊括在一个事务中。
而且,Doctrine 2也支持(且鼓励)你自己来接管并控制事务划界。
这里有使用Doctrine ORM处理事务的两种方法,接下来将详细讲述。
方法1:隐式
第一种方法就是使用Doctrine ORM默认提供的事务处理机制。下面的代码片段,就没有任何显示的事务划界:
<?php
// $me instanceof EntityManager
$user = new User;