SlideShare une entreprise Scribd logo
1  sur  80
Télécharger pour lire hors ligne
ADO.NETとORMとMicro-ORM
-dapper dot netを使ってみた-
at
ヒーロー島 秋の収穫祭 2013
2013/10/12
きよくらならみ
自己紹介
• きよくら ならみ
– @kiyokura / id:kiyokura
• 岡山生まれ岡山育ちのプログラマー
– 現在は県内の某製造業で社内SE
• NET系の開発やWebアプリ開発
– Microsoft MVP for ASP.NET/IIS
本セッションの目的
• Micro-ORMを知ってもらう
• dapper dot netを知ってもらう
本セッションのゴール
• .NET向けのDBアクセス手法の概要を知る
• ORMの概要と"不得手"な部分を知る
• dapper dot netの概要を知る
本日のアジェンダ
• .NETのDBアクセステクノロジの基本
• ORM 超・概要と.NETのORM
• ORM≠銀の弾丸
• Micro-ORM そしてdapper dot net
• まとめ
.NETのDBアクセステクノロジの基本
基本はADO.NET
• .NETにおけるDBアクセスの基本
• 様々なデータソースに対して
『一貫性を持ったアクセス機能を実現』
ADO.NET
ADO.NETのスタック
データソース(DBほか、xmlやExcel等)
データプロバイダ
Connection Command
DataReader
Transaction
Transaction DataAdapter
プログラム(C# or VB.NET or etc)
DataSet
DataTable
一貫性のある操作
• 各ソースに対応した”プロバイダ”
– 製品専用のプロバイダ
• SQL Server
• SQL Server CE
• Oracle
• MySQL
• PostgreSQL
…等々。
– 汎用ドライバ用
• OLE DB
• ODBC
プロバイダはインタフェースを実装
• 共通のインタフェースを実装することで
操作の一貫性を保証
– IDataReader
– IDbConnection
– IDbCommand
– IDataParameter
– IDbTransaction
– IDbDataAdapter
接続の基本:Connection
• Connectionオブジェクトに
接続文字列をセット
• 接続を開始
クエリ実行の基本:Command
• Commandオブジェクトによりクエリ実行
– DML・DDL・DCL
• CommandにSQLをセットして実行
• 結果としてレコードが返るときは?
→ DataReaderを使う
データ読込の基本:DataReader
• Commandの結果DataReaderが返る
• レコードに対して順番にアクセス
– DBのカーソルやADOのRecordSetに近い
最も基本的なデータアクセス流れ
• DBに接続
– Connectionオブジェクト
• コマンドにSQLをセット
– Commandオブジェクト
• コマンドを実行してリーダーを作成
– DataReaderオブジェクト
リーダーをループしながらデータを読む
最も基本的なデータアクセス流れ
DB
Connection
接続文字列
(1)
Command
SQL: SELECT * FROM HOGEHOGE
(2)
DataReader(3)
コード例
ここまでのまとめ
.NETのDBアクセスの基本はADO.NET
ソース毎に異なるプロバイダを利用
共通のインタフェースにより
ソースが変わっても一貫した操作を提供
データ読み込みの基本手順
Connectionで接続
Commandで実行
DataReaderで読込
ORM 超・概要と.NETのORM
ORMって?
• Object-Relational mapper / mapping
– O/RM 、 O/R-M、OR-M
– 「おーあーるまっぱー」
• 永続化データに対するギャップを埋める
– メモリ上の変数とDB上のカラムのマッピング
– "オブジェクト操作"と"DBの操作"
• その他、DB操作をラップ
代表的な機能
• クエリの自動生成
• データ(値)のマッピング
• DB操作のラッピング
• ソースコード自動生成
ライブラリや実装よって有無はあります
例:Entity Framework
• .NET用のORMであるEntity Framework
を例としてデモします
– ASP.NET MVC 4 + Entity Framework
Entity Frameworkの例
• メソッドを呼ぶだけでデータを取得
– 列挙型のオブジェクトとしてデータが
「マネージドのオブジェクト」として取得できる
• オブジェクトに値とセットしてメソッドを呼
べば更新完了
SQLを全く意識しない
DBの接続等の制御用もまったく意識しない
.NETで利用できるORMの例
• マイクロソフト製
– ADO.NET DataSet
– LINQ to SQL
– Entity Framework
• サードパーティー製
– NHibernate
– S2Dao.NET
– LightSpeed(商用)
…等々
ここまでのまとめ
ORMはDB操作をラップ
SQL作成や実行、データのオブジェクトへの
マップ等
.NET向けにも多数の実装あり
ORM≠銀の弾丸
ORMを使うべきか否か
• "便利なケース"では使うべき
– どんどん使いましょう
• "美味しくない場合"は使わなくてよい
– 無理して使うようなものでもない
ただし当然ですが
• 銀の弾丸は無い
• あらゆるケースで全く問題が無いわけで
は無い
"美味しくない"例をいくつか考えてみます
DB設計がORM適さなくなりがちなケース
• データがアプリケーション内に閉じない
– データが多数のアプリで横断的に利用される
– アプリから見えない業務ロジックが存在
• 『データ > アプリ』
– 利用範囲の他、権限や寿命
• データ中心アプローチ(DOA)
基幹業務システムの例
販売データ
労務データ
製造データ
研究開発
データ
顧客データ
販売管理システム 生産管理システム
賞与計算システム 製造品質管理
システム
パフォーマンスで問題が出るケース
• ORMでパフォーマンスが出ない場合が
– 仮に設計に問題がなくても
• パフォーマンス比較の例
手法 実行時間(短=速)
Hand coded(DataReaderでループ) 47ms
NHibernate SQL 104ms
Linq 2 SQL ExecuteQuery 181ms
Entity framework ExecuteStoreQuery 631ms
dapper dot net の公式サイト上のベンチマーク結果より
( https://code.google.com/p/dapper-dot-net/ )
その他のアリがちな話
• そもそもDB設計がイケてない
– 自動生成のクエリではパフォーマンスが(
– 適切にリレーションが貼られていない
• プロバイダが(使いたい)ORMに未対応
– たまにある
• DBサーバ・ネイティブクライアント・プロバイダのそれぞ
れのバージョンの対応とかも関連
• 自動生成されたSQLがDBAの怒りに触れる(
– DBA:「そんなトン○キなクエリ投げるな!」
ここまでのまとめ
ORMのメリットが生きる場合は使うべき
ORMのメリットが生きない・使いにくい
場面は存在する
そんなときは無理して使う必要はない
Micro-ORM
そしてdapper dot net
ORMが使えなくても
• なるべく楽はしたい
• 生ADO.NETはいろいろ面倒
– Connectionはまだしも
– SQL組み立てて
– Commandを作って
– Parameterを作って
– 実行して
– 値をオブジェクトにマッピング
そこでMicro-ORM
• 隙間を埋めてくれるソリューション
Micro-ORMとは
• 特徴
– フルスタックのORMほどの機能は無いが
– そこそこ便利な機能があって
– 軽量で
– 早い
• そういうカテゴリ(?)のライブラリの総称
機能のあるやなしや
クエリの
自動生成
データ
(値)の
マッピング
DB操作の
ラッピング
ソース
コード自
動生成
☆物によってはある程度するものも
つまり
• SQLは自分で書く必要がある
• 実行時の面倒なことのうち、
ある程度のことをやってくれる
代表例
• dappar dot net
– この後、少し詳しく話します
• Massive
– https://github.com/robconery/massive
• PetaPoco
– http://www.toptensoftware.com/petapoco
dapper dot net
• Dapper.NETとも書かれる
– .NET向けのMicro-ORM
• オープンソース
– ApachとMITのデュアルライセンス
• サイトはこの辺
– https://code.google.com/p/dapper-dot-net
– https://github.com/SamSaffron/dapper-dot-
net
dapper dot net
• 作った人: Sam Saffron
– Stack Overflowの中の人
• 早い
– 生SQL実行(DataReader)とほぼ互角
– Stack Overflowのパフォーマンス改善のため
に作られた(らしい)
dapper dot net
• どのDBで使える?
– ADO.NET準拠のプロバイダが使えるなら大抵
いけるんでは?
• IDbConnectionの実装なら、多分
• 確認した範囲
– SQL Server / SQL Server CE
– Oracle
– MySQL
– postgreSQL
使い方
• 2STEPで簡単!
STEP1
• NuGetで一発導入!
STEP2
• 使いたい場面でDapper名前空間をイン
ポート
– 拡張メソッドなのでインポート必須!
これだけです
実際の例をご紹介します
• ADO.NETで直接実行する場合との
対比で紹介します
例1:とりあえずループして読みだす
ADO.NETの場合
using (var cn = new SqlCeConnection(connectionString))
{
cn.Open();
var sql = "select ID, Name , Age , Email From Employee;";
var cmd = new SqlCeCommand(sql, cn);
using (var dr = cmd.ExecuteReader())
{
while (dr.Read())
{
Console.WriteLine("ID:{0} , Name:{1} , Age:{2} , Email:{3}",
dr["ID"],
dr["Name"],
dr["Age"],
dr["Email"]);
}
}
}
dapperの場合
using (var cn = new SqlCeConnection(connectionString))
{
cn.Open();
var sql = "select ID, Name , Age , Email From Employee;";
var result = cn.Query(sql);
foreach (var d in result)
{
Console.WriteLine("ID:{0} , Name:{1} , Age:{2} , Email:{3}",
d.ID,
d.Name,
d.Age,
d.Email);
}
}
ポイント1
• Query拡張メソッド
– Connectionオブジェクトを拡張
ポイント2
• 戻り値はIEnumerable<dynamic>
つまり
• Query拡張メソッドを実行すると
• 戻り値はIEnumerable<dynamic>が返っ
てくる
• dynamicの中身はカラム名から自動生成さ
れた匿名型にマップされている
例2:用意した型にマップする
ADO.NETの場合
using (var cn = new SqlCeConnection(connectionString))
{
cn.Open();
var cmd = new SqlCeCommand("select ID, Name , Age , Email From Employee;", cn);
var result = new List<EmployeeEntity>();
using (var dr = cmd.ExecuteReader())
{
while (dr.Read())
{
result.Add(new EmployeeEntity()
{
ID = (int)dr["ID"],
Name = (string)dr["Name"],
Age = (int)dr["Age"],
Email = (string)dr["Email"]
});
}
}
foreach (var d in result)
{
Console.WriteLine("ID:{0} , Name:{1} , Age:{2} , Email:{3}",
d.ID,
d.Name,
d.Age,
d.Email);
}
}
dapperの場合
using (var cn = new SqlCeConnection(connectionString))
{
cn.Open();
var sql = "select ID, Name , Age , Email From Employee;";
var result = cn.Query<EmployeeEntity>(sql);
foreach (var d in result)
{
Console.WriteLine("ID:{0} , Name:{1} , Age:{2} , Email:{3}",
d.ID,
d.Name,
d.Age,
d.Email);
}
}
ポイント1
• Query<T>拡張メソッド
– マップしたい型を型パラメータに指定
ポイント2
• 戻り値はIEnumerable<dynamic>
つまり
• 型パラメータTをとる
Query拡張メソッドを実行すると
• 戻り値はIEnumerable<T>が返ってくる
– クエリの結果が型Tにマップされている
• カラム名に対応したメンバにマップ
• 適切に型の変換も行われている
例3:パラメータをバインドする
ADO.NETの場合
using (var cn = new SqlCeConnection(connectionString))
{
cn.Open();
var cmd = new SqlCeCommand("select ID, Name , Age , Email From Employee where Age = @age;", cn);
var param = cmd.CreateParameter();
param.SqlDbType = System.Data.SqlDbType.Int;
param.Direction = System.Data.ParameterDirection.Input;
param.ParameterName = "age";
param.Value = 25;
cmd.Parameters.Add(param);
var result = new List<EmployeeEntity>();
using (var dr = cmd.ExecuteReader())
{
while (dr.Read())
{
result.Add(new EmployeeEntity()
{
ID = (int)dr["ID"],
Name = (string)dr["Name"],
Age = (int)dr["Age"],
Email = (string)dr["Email"]
});
}
}
foreach (var d in result)
{
Console.WriteLine("ID:{0} , Name:{1} , Age:{2} , Email:{3}",
d.ID,
d.Name,
d.Age,
d.Email);
}
dapperの場合
using (var cn = new SqlCeConnection(connectionString))
{
cn.Open();
var sql = "select ID, Name , Age , Email From Employee where Age = @Age;";
var result = cn.Query<EmployeeEntity>(sql, new { Age = 25 });
foreach (var d in result)
{
Console.WriteLine("ID:{0} , Name:{1} , Age:{2} , Email:{3}",
d.ID,
d.Name,
d.Age,
d.Email);
}
}
ポイント
• Query<T>拡張メソッドの第二引数に
パラメータを指定
– SQL文のパラメータと同じメンバがあればOK
• 匿名型でもOK
つまり
• Query拡張メソッドの第二引数に
• SQL文中のパラメータと
同名のメンバを持つオブジェクト
を渡すと
• パラメータとしてバインドして実行する
その他
• 複数の型(ネストされた型)にバインド
することも可能
– 但し、基本1:1
• もちろん、INSERT / UPDATE / DELETE
等も発行できる
FAQ
Q1:速度は?
• A1:早いです
– 生ADO.NETとほぼ誤差の範囲くらい
– 公式サイトのベンチマークも参照
Q2: DB側の命名がsnake_case…
• A2-1:SQLで別名を付ける
– first_name as FirstName
• A2-2:SetTypeMapという仕組みを使う
– 詳細は公式サンプルや、neue ccさんのblog
エントリを参照
• http://neue.cc/2012/12/11_390.html
Q3:SQL書けません!
• A3:頑張って書いてください
– どうしても解らない人は、クエリビルダ的な
ツール使うといいのでは
• SQL Server Management Studio
• A5:SQL Mk-2
• SI Object Browser
– もしくは、ヘルパライブラリを使う手も
• Dapper.Rainbow
• Dapper.Contrib
Q4:マップするクラスは自分書く?
• A4:自分で書きましょう
– 別途、自動化・半自動化はできるのでは
• DDLやDB定義書から
• マクロやT4で自動生成等
補足情報
• ソースは1ファイルなのでGithubからとっ
てきて入れてもいいです
– ちょっと改変して使いたいならそれが楽
• MySQLで高負荷かけると不具合が出るら
しい
– 詳細と対策などはneue ccさんのblogエント
リ参照:
• http://neue.cc/2013/08/06_423.html
ここまでのまとめ
生ADO.NETとORMの間を埋める、
Micro-ORM
dapper dot netは早くて手軽で便利
まとめ
まとめ(1)
• .NETのデータアクセスはADO.NETが基本
• ORMは便利だが使いにくいケースもある
• 間を埋める選択してのMicro-ORM
まとめ(2)
• Micro-ORMは大体こんなもの
– SQLは自力で書く
– 実行結果やパラメータをマップしてくれる
• dapper dot net
– 多分もっともメジャーなMicro-ORM
– 手軽で便利、(割と)かゆいところに手が届く
最後に
• 「ORMが適用しにくい」と思ったら無理
に適用しなくていいです
– 無理に使っても余計な苦労を背負い込む事が
多い気がします
最後に
• 生ADO.NETよりも
「もう少し文化的にやりたい」
とき、dapperはお勧めのソリューション
だと思います
• Web Pages(WeMatrix)にも良いかも
– WebMatrix.Dataに物足りなくなったときの
次の一手として
参考
dapper公式関連
• 公式サイト
– https://code.google.com/p/dapper-dot-net/
• ベンチマーク結果あり
• ソースコード
– https://github.com/SamSaffron/dapper-dot-
net
• テストコード(サンプルとしても有用)あり
– https://github.com/SamSaffron/dapper-dot-
net/blob/master/Tests/Tests.cs
• Test内に、ベンチマークのプログラムもあり
その他
• Micro ORMs with Sam Saffron and Rob
Conery
– http://www.infoq.com/articles/ORM-
Saffron-Conery
– MassiveのRob ConeryとdapperのSam
SaffronへのMicro-ORMについてのインタ
ビュー記事

Contenu connexe

Tendances

Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Shin Ohno
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門demuyan
 
.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素Akira Inoue
 
Spring fest2020 spring-security
Spring fest2020 spring-securitySpring fest2020 spring-security
Spring fest2020 spring-security土岐 孝平
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはJun-ichi Sakamoto
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミングPreferred Networks
 
これから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーションこれから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーション土岐 孝平
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugItsuki Kuroda
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本Takahiro YAMADA
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本kazuki kumagai
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
Rails上でのpub/sub イベントハンドラの扱い
Rails上でのpub/sub イベントハンドラの扱いRails上でのpub/sub イベントハンドラの扱い
Rails上でのpub/sub イベントハンドラの扱いota42y
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCdisc99_
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣Masahiro Nishimi
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)Takuto Wada
 

Tendances (20)

Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
 
.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素
 
Railsで作るBFFの功罪
Railsで作るBFFの功罪Railsで作るBFFの功罪
Railsで作るBFFの功罪
 
Spring fest2020 spring-security
Spring fest2020 spring-securitySpring fest2020 spring-security
Spring fest2020 spring-security
 
MVVM入門
MVVM入門MVVM入門
MVVM入門
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
これから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーションこれから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーション
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
Rails上でのpub/sub イベントハンドラの扱い
Rails上でのpub/sub イベントハンドラの扱いRails上でのpub/sub イベントハンドラの扱い
Rails上でのpub/sub イベントハンドラの扱い
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 

Similaire à ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた

Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoTreasure Data, Inc.
 
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎Insight Technology, Inc.
 
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contractSpring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contractTakeshi Ogawa
 
20141017 introduce razor
20141017 introduce razor20141017 introduce razor
20141017 introduce razordo_aki
 
TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介ao27
 
実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選Drecom Co., Ltd.
 
よろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだよろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだNarami Kiyokura
 
クラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニングクラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニングShin Matsumoto
 
SageMaker Neoの可能性について - 第3回 Amazon SageMaker 事例祭り+体験ハンズオン
SageMaker Neoの可能性について- 第3回 Amazon SageMaker 事例祭り+体験ハンズオンSageMaker Neoの可能性について- 第3回 Amazon SageMaker 事例祭り+体験ハンズオン
SageMaker Neoの可能性について - 第3回 Amazon SageMaker 事例祭り+体験ハンズオンtomohiro kato
 
Learning spaerk chapter03
Learning spaerk chapter03Learning spaerk chapter03
Learning spaerk chapter03Akimitsu Takagi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例fumoto kazuhiro
 
Springでdao 20070413
Springでdao 20070413Springでdao 20070413
Springでdao 20070413Funato Takashi
 
システムパフォーマンス勉強会#8
システムパフォーマンス勉強会#8システムパフォーマンス勉強会#8
システムパフォーマンス勉強会#8shingo suzuki
 
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ  AWS Data PipelineAWS Black Belt Techシリーズ  AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data PipelineAmazon Web Services Japan
 
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうDevTakas
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Taro L. Saito
 

Similaire à ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた (20)

Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
 
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
 
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contractSpring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
 
20141017 introduce razor
20141017 introduce razor20141017 introduce razor
20141017 introduce razor
 
TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介
 
実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選
 
よろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだよろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだ
 
クラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニングクラウド運用のためのストリームマイニング
クラウド運用のためのストリームマイニング
 
SageMaker Neoの可能性について - 第3回 Amazon SageMaker 事例祭り+体験ハンズオン
SageMaker Neoの可能性について- 第3回 Amazon SageMaker 事例祭り+体験ハンズオンSageMaker Neoの可能性について- 第3回 Amazon SageMaker 事例祭り+体験ハンズオン
SageMaker Neoの可能性について - 第3回 Amazon SageMaker 事例祭り+体験ハンズオン
 
Learning spaerk chapter03
Learning spaerk chapter03Learning spaerk chapter03
Learning spaerk chapter03
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
 
Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方
 
Springでdao 20070413
Springでdao 20070413Springでdao 20070413
Springでdao 20070413
 
システムパフォーマンス勉強会#8
システムパフォーマンス勉強会#8システムパフォーマンス勉強会#8
システムパフォーマンス勉強会#8
 
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ  AWS Data PipelineAWS Black Belt Techシリーズ  AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data Pipeline
 
activerecord-turntable
activerecord-turntableactiverecord-turntable
activerecord-turntable
 
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おう
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例
 

Plus de Narami Kiyokura

SQL Server のプロジェクト指向オフライン データベース開発を採用してみた話
SQL Server のプロジェクト指向オフライン データベース開発を採用してみた話SQL Server のプロジェクト指向オフライン データベース開発を採用してみた話
SQL Server のプロジェクト指向オフライン データベース開発を採用してみた話Narami Kiyokura
 
どうなる?Visual Studioの クライアントサイド web開発の今後
どうなる?Visual Studioの クライアントサイド web開発の今後どうなる?Visual Studioの クライアントサイド web開発の今後
どうなる?Visual Studioの クライアントサイド web開発の今後Narami Kiyokura
 
How do you like knockout?
How do you like knockout?How do you like knockout?
How do you like knockout?Narami Kiyokura
 
Windows ストアアプリを HTMLで作成する
Windows ストアアプリをHTMLで作成するWindows ストアアプリをHTMLで作成する
Windows ストアアプリを HTMLで作成するNarami Kiyokura
 
ASP.NET "NOW" and "NEXT"
ASP.NET "NOW" and "NEXT"ASP.NET "NOW" and "NEXT"
ASP.NET "NOW" and "NEXT"Narami Kiyokura
 
無償版Visual StudioでいろいろWeb開発
無償版Visual StudioでいろいろWeb開発無償版Visual StudioでいろいろWeb開発
無償版Visual StudioでいろいろWeb開発Narami Kiyokura
 
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Narami Kiyokura
 
軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancyNarami Kiyokura
 
最近、リアルタイムWebが面白い
最近、リアルタイムWebが面白い最近、リアルタイムWebが面白い
最近、リアルタイムWebが面白いNarami Kiyokura
 
脱・Excelホーガンシのために、その1
脱・Excelホーガンシのために、その1脱・Excelホーガンシのために、その1
脱・Excelホーガンシのために、その1Narami Kiyokura
 
最近のASP.NET事情2013Winter
最近のASP.NET事情2013Winter最近のASP.NET事情2013Winter
最近のASP.NET事情2013WinterNarami Kiyokura
 
軽量フレームワークNancy
軽量フレームワークNancy軽量フレームワークNancy
軽量フレームワークNancyNarami Kiyokura
 
WebMatrixで遊ぶ-ゆるふわGitHubページ
WebMatrixで遊ぶ-ゆるふわGitHubページWebMatrixで遊ぶ-ゆるふわGitHubページ
WebMatrixで遊ぶ-ゆるふわGitHubページNarami Kiyokura
 
使ってみよう、WebMatrix3
使ってみよう、WebMatrix3使ってみよう、WebMatrix3
使ってみよう、WebMatrix3Narami Kiyokura
 
NuGetの社内利用のススメ
NuGetの社内利用のススメNuGetの社内利用のススメ
NuGetの社内利用のススメNarami Kiyokura
 
IMESupport for Sublime Text 2 / ConvertToUTF8の紹介
IMESupport for Sublime Text 2 / ConvertToUTF8の紹介IMESupport for Sublime Text 2 / ConvertToUTF8の紹介
IMESupport for Sublime Text 2 / ConvertToUTF8の紹介Narami Kiyokura
 

Plus de Narami Kiyokura (17)

SQL Server のプロジェクト指向オフライン データベース開発を採用してみた話
SQL Server のプロジェクト指向オフライン データベース開発を採用してみた話SQL Server のプロジェクト指向オフライン データベース開発を採用してみた話
SQL Server のプロジェクト指向オフライン データベース開発を採用してみた話
 
どうなる?Visual Studioの クライアントサイド web開発の今後
どうなる?Visual Studioの クライアントサイド web開発の今後どうなる?Visual Studioの クライアントサイド web開発の今後
どうなる?Visual Studioの クライアントサイド web開発の今後
 
How do you like knockout?
How do you like knockout?How do you like knockout?
How do you like knockout?
 
Windows ストアアプリを HTMLで作成する
Windows ストアアプリをHTMLで作成するWindows ストアアプリをHTMLで作成する
Windows ストアアプリを HTMLで作成する
 
ASP.NET "NOW" and "NEXT"
ASP.NET "NOW" and "NEXT"ASP.NET "NOW" and "NEXT"
ASP.NET "NOW" and "NEXT"
 
無償版Visual StudioでいろいろWeb開発
無償版Visual StudioでいろいろWeb開発無償版Visual StudioでいろいろWeb開発
無償版Visual StudioでいろいろWeb開発
 
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
 
軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy
 
最近、リアルタイムWebが面白い
最近、リアルタイムWebが面白い最近、リアルタイムWebが面白い
最近、リアルタイムWebが面白い
 
脱・Excelホーガンシのために、その1
脱・Excelホーガンシのために、その1脱・Excelホーガンシのために、その1
脱・Excelホーガンシのために、その1
 
最近のASP.NET事情2013Winter
最近のASP.NET事情2013Winter最近のASP.NET事情2013Winter
最近のASP.NET事情2013Winter
 
軽量フレームワークNancy
軽量フレームワークNancy軽量フレームワークNancy
軽量フレームワークNancy
 
WebMatrixで遊ぶ-ゆるふわGitHubページ
WebMatrixで遊ぶ-ゆるふわGitHubページWebMatrixで遊ぶ-ゆるふわGitHubページ
WebMatrixで遊ぶ-ゆるふわGitHubページ
 
TypeScript超入門
TypeScript超入門TypeScript超入門
TypeScript超入門
 
使ってみよう、WebMatrix3
使ってみよう、WebMatrix3使ってみよう、WebMatrix3
使ってみよう、WebMatrix3
 
NuGetの社内利用のススメ
NuGetの社内利用のススメNuGetの社内利用のススメ
NuGetの社内利用のススメ
 
IMESupport for Sublime Text 2 / ConvertToUTF8の紹介
IMESupport for Sublime Text 2 / ConvertToUTF8の紹介IMESupport for Sublime Text 2 / ConvertToUTF8の紹介
IMESupport for Sublime Text 2 / ConvertToUTF8の紹介
 

Dernier

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Dernier (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた