Doctrine2

Doctrine2 DBAL フェッチのサンプル

実装コード class TestDoctrineDbalFetchCommand extends ContainerAwareCommand { const EXIT_SUCCESS = 0; const EXIT_FAILURE = 1; const THROUGHPUT = 5; protected function configure() { $this->setName('sample:dbal-fetch'); } protected function …

Doctrine2 デバッグモードとEntityManager::clear()について

Doctrine2のパフォーマンスとメモリ使用量について、「デバッグモード」と「EntityManager::clear()」を検証します。 結論 以下の条件を満たす場合、パフォーマンスとメモリ使用量に影響が出るようです。 env が prod 以外で app/console の「--no-debug」オ…

Doctrine2 DBAL フェッチのサンプル

実装コード class TestDoctrineDbalFetchCommand extends ContainerAwareCommand { const EXIT_SUCCESS = 0; const EXIT_FAILURE = 1; const THROUGHPUT = 5; protected function configure() { $this->setName('sample:dbal-fetch'); } protected function …

Doctrine2 Mapping Type を確認します

Entity 以下の様なエンティティを用意して、 $ php app/console doctrine:schema:update --force で、DBスキーマを作ってみます。 use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="foobar") */ class FooBar { /** * @ORM\Id * @ORM…

Doctrine2 ORM のロック機構について

参考情報 : 9. Transactions and Concurrency — Doctrine 2 ORM 2.0.0 documentation 楽観的ロック と 悲観的ロックがあります 楽観的ロック : LockMode::OPTIMISTIC + version指定(任意) 悲観的ロック : LockMode::PESSIMISTIC_WRITE 楽観的ロックの場合、…

Symfony2 サービスにEntityManagerを注入します(Dependency Injection)

データベース操作を伴うサービス(ビジネスロジック)を開発する際、エンティティマネージャをどうやって求めれば良いでしょうか? 呼出側から都度もらう?自前でコンテナ経由で取得(ハードコード)する? んー、サービス呼出時にコンテナから注入してもらいま…

Symfony2 Doctrine2のEventManagerをコンテナから取得します

コンテナに登録されているサービスの抜粋は以下です。 $ php app/console container:debug | egrep '(^doctrine\s|^doctrine.+entity_manager)' doctrine container Doctrine\Bundle\DoctrineBundle\Registry doctrine.orm.default_entity_manager container…

Doctrine2 トランザクションと並行性

Doctrine 2 ORM 2 documentation - 13. Transactions and Concurrency を翻訳してみようと思います。 13. トランザクションと並行性 13.1. トランザクションの境界設定 トランザクションの分割は、トランザクション境界を定義するタスクです。 適切なトラン…

Doctrine2 ORM でバルクインサート

Doctrine2 ORM Batch Processing を参考に、バルクインサートを試してみます。 DBスキーマ mysql> desc mercury; +--------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-----…

Doctrine2 ORM を試してみます

エンティティクラスの作成 プロパティとマッピング情報を定義します。 use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="products") */ class Product { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strateg…

MySQL + Doctrine2 DBAL でシーケンス発行

まずはシーケンスを保持するMyISAMテーブルを用意します。 CREATE TABLE seq_example ( id bigint(20) unsigned not null ) ENGINE=MyISAM; mysql> insert into seq_example values (1); mysql> select * from seq_example; +----+ | id | +----+ | 1 | +---…