PetaPocoは.NETアプリケーションのためのシンO/Rマッパー (ORM) だ。NHibernateやEntity Frameworkといった本格的なORMとは違って、機能の豊富さよりも使いやすさやパフォーマンスに重点が置かれている。PetaPocoはC#ファイル1つでできており、強く型付けされたPOCOで動作し、T4 Templateなどを使ったクラス生成をサポートする。
PetaPocoには次のような非常に興味深い機能がある。
-
SQL Server、SQL Server CE、MySQL、PostgreSQL、Oracleデータベースで動作する
-
Insert/Delete/Update/Save/IsNewのためのヘルパーメソッド
-
簡単なトランザクションのサポート
-
ページ化されたリクエスト。自動的にレコード全体を分析し、特定のページをフェッチする。
-
パラメータ置き換えのサポート。オブジェクトプロパティから名前付きパラメータを取り出せる。
-
低摩擦のSQL Builderクラスを含む。
-
部分的レコード更新
-
データベーススキーマからPOCOクラスを生成するためのT4 Templateを含む。
これら機能はすべて、PetaPocoのWebサイトにあるサンプルとともに詳しく説明されている。
パフォーマンスに関して、PetaPocoはDapperとともにトップクラスであり、手書きのDALと比べても若干遅いだけだ。
始めるにあたり、役に立つチュートリアルがいくつかある。公式Webサイトのブログ記事やいくつかの独自記事だ(ここやここ)。しかもオープンソースなので、空間データといった具体的シナリオを扱えるよう追加するのも非常に簡単だ。
Micro ORMは人気が出始めたところで、もうたくさんのオープンソースプロジェクトがリリースされている。.NET向けによく知られているものとして、DapperやMassiveがある。これらは本格的なORMよりもシンプルで効率がよく、SQL文を完全に動的に生成するのではなく手書きすることを期待している場合が多い。また、つまらない保守およびデバッグを要する冗長なマッピングファイルも必要ない。