Others Other Hibernate related projects (e.g. Hibernate OGM, Hibernate Shards).
Others Other Hibernate related projects (e.g. Hibernate OGM, Hibernate Shards).
サンフランシスコのプログラマLaurie Voss氏が書いた見逃せない記事が賑わっています。近年のフレームワークやライブラリの定番中の定番ORマッパーが既にアンチパターンなのではというのが彼の主張です。この記事を書くきっかけになったのはこのツイートだそうです。 I cannot overstate the degree to which ORM is a dangerous antipattern. — Laurie Voss (@seldo) June 9, 2011 ORM が危険なアンチパターンだっていうのはどれだけ言っても言い過ぎることはない このツイートに対して各方面(ActiveRecord, Doctrine, Hibernate)から多くの(激しい)返信が寄せられて書かれたのが問題のエントリです。まずはアンチパターンとは何かの定義として下記の2つを挙げています。 当初は有益
ORMの構文を必ず使う必要なんてないのですよ。 <?php // なんでもいいのでConnectionとってくる $employeeTable = Doctrine_Core::getTable('Employee'); $con = $employeeTable->getConnection(); $sql = "SELECT * FROM employee where YEAR(employed_at) = :year"; $employees = $con->fetchAll($sql, array(':year' => 2009)); $sql = "SELECT * FROM employee ORDER BY employed_at DESC LIMIT 1"; $employee = $con->fetchRow($sql); $sql = "SELECT id FROM e
ふつうにSQLでUPDATE文を書くときは、複数のレコードに対して変更が適用されますが、Doctrine_Recordクラスを使って変更をしようとすると、一つ一つレコードを取得して、save()メソッドを呼ぶということをしなければなりません。 これはリソースの無駄遣いなので、複数のレコードを一括して変更する場合は、Doctrine_Queryのupdate()メソッドを使います。 $q = Doctrine::getTable('SomeTable')->createQuery(); $q->update('SomeTable'); $q->set('field_name', 'new_field_value'); $q->where('field_name > ?', 'some_value'); $q->execute();
スキーマファイルの目的はPHPコードの編集よりもYAMLファイルでモデルの定義を直接管理できるようにすることです。すべてのモデルの定義/クラスを生成するためにYAMLスキーマファイルは解析され使われます。これによってDoctrineモデルの定義がはるかにポータブルなものになります。 スキーマファイルはPHPコードで書く通常のすべての内容をサポートします。接続バインディング用のコンポーネント、リレーション、属性、テンプレート/ビヘイビア、インデックスなどがあります。 Doctrineは省略記法でスキーマを指定する機能を提供します。多くのスキーマパラメータはデフォルトの値を持ち、これによって構文をできるのでDoctrineはデフォルトを利用できます。すべての省略記法を利用したスキーマの例は下記の通りです。 detect_relationsオプションによってカラムの名前からリレーションの推測が行
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く