PHPカンファレンス関西2016 パネルディスカッション ORMユーザー対談 で使ったスライドです
このエントリでは、Yegor Bugayenkoによる記事、ORM Is an Offensive Anti-Patternを紹介する。 (Yegorから和訳と転載の許可は得た。) 以下はその全文の和訳だが、意訳超訳が混じっているので、もとのニュアンスを知りたければ元記事を読んでもいいし、読まなくてもいい。 結論から言えば、ORMはオブジェクト指向プログラミングの原則の全てに違反するひどいアンチパターンだ。オブジェクトをバラバラに引き裂き、もの言わぬ受身なデータ入れに変えてしまう。 小さいWebアプリケーションから、数千のテーブルをCRUD操作するエンタープライズシステムまで、どんなアプリケーションにもORMが存在することはゆるせない。 代わりになるものは? SQLを話すオブジェクトだ。 ORMの仕組み オブジェクト関係マッピング (Object-relatinal mapping、ORM
リレーションシップを作りたい場合は以下のように getMany() メソッドを使って実装します。この場合、Category : Item が一対多のリレーションシップを持ちます。 @Table(name = "Categories") public class Category extends Model { @Column(name = "Name") public String name; public List<Item> items() { return getMany(Item.class, "Category"); } } 保存・更新・削除・クエリ 作成したモデルクラスを使って DB に保存したりクエリで取得したりするには以下のように実装します。これぞ ActiveRecord スタイル。見やすく分かりやすく素晴らしいですね! // 保存 Item item = new Ite
ベンチャー社長で技術者で:ベンチャー社長で技術者で: オブジェクト指向言語で処理したら保守性が悪い!. というのを目にした。要するに「OO言語+RDBな組み合わせ」において、O\Rマッピングに頼らずにちゃんとSQLとストアドを書いた方がいい、と言うことである。 L.starは元々Java屋でそれからSQLに移ったので、未だに自分が両方をバックグラウンドに持つ人間だと思っている。O/Rマッピングのイ ンピーダンスミスマッチを解決する簡単な方法が実は無い、と言うぐらいには両方を理解している。だからこそ言いたいが、この文章、特定のDBが中央に鎮座していて、それがすべての中心になるような業務システムにおいては完全に正しい。ただし、元々そう言うシステムを念頭に置いて書かれた文章であるので、その点はちゃんと考えるべきだ。O/Rマッピングに頼り切って、SQLをきっちり書かない、ということをすると性能が出
こんにちは。開発チームの駒津です。 ここ半年ほど、弊社アプリLINEのAndroid版を開発しています。関係者一同の頑張りもあってAndroidユーザー 100万人達成という非常にうれしい状況なのですが、かなりのハイスピードで開発が進みましたのであまり冒険せずに、力技で少し泥臭く実装している箇所もあります。 データベース周りも普通にSQLiteDatabase経由でSQL文を書いているのですが、できればOR Mapperを使いたかった… という反省点があり、現在開発状況が少し落ち着いた (のか…? 本当に…?) 今のうちにそっち方面を調べておこうかと思います。 Androidではそのスペックの都合上, 軽く動作するOR Mapperが向いていそうです。そういう視点で色々探して見たところORMLiteが良さそうな気がしました。正式にAndroidに対応していると謳っているのも嬉しいところ。
Mapping Objects to Relational Databases: O/R Mapping In Detail Most modern business application development initiatives use object technology such as Java or C# to build the application software and relational databases to store the data. This isn't to say that you don't have other options, there are many applications built with procedural languages such as COBOL and many systems will use object d
サンフランシスコのプログラマ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
First published at Tuesday, 28 August 2007 Warning: This blog post is more then 17 years old – read and use with care. It is not really Active Record (AR) which sucks but the implied, perhaps just misinterpreted, common usage as an ORM (object relational mapping). To summarize the following blog post in one sentence, so that you may skip reading it: Active Record may be used to implement ORM, but
New ORM Designer 3 called Skipper is available on our new site www.skipper18.com visual editor for ORM frameworks Create your visual model and let ORM Designer to export schema definition files for you. Save up to 75 % of your time thanks to automatic export, error elimination and other improvements.
Solid Foundation. No Magic. Spot is a simple and efficient DataMapper built on Doctrine DBAL. PHP 5.4+ with support for MySQL, PostgreSQL, SQLite, and more... View on GitHub Read The Docs No AnnotationsAnnotations are not code. They are not extendible, there are no type hints or auto-completion. No Proxy ClassesThe Entities you define are the same entities that both you and Spot will be workin
KVSでORマッパーを使うという事 ケイレキ.jpの中でケイレキ.jpに招待して欲しい人を呼びかけても絶賛スルーされてるYappoです。さて今回は今巷で大人気のKey Value StorageでORマッパーを使う事についてお話するのじゃ。 一般的にORマッパーとはオブジェクトとリレーショナルデータベースをマッピングする為の仕組みの呼び名だと言うのは知られている所です。はい、そうするとKVSってのはハッシュデータベースであるわけなのでおかしいですね。今回の話はData::Model::Driver::Memcachedを使う事を前提としてるので問題が無いのです。なぜなら「data/object mapper」とか書いてあるから。 いわゆるPerlなORマッパーってのは行データをHASHで管理します。それはRDBが一般的に表形式でデータを管理しているからなんだと思います。なんでKVSをオブジ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く