Your SlideShare is downloading. ×
ビジネス向けアプリケーションにこそ進めるMicro orm
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

ビジネス向けアプリケーションにこそ進めるMicro orm

1,406
views

Published on


0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,406
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
4
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 1 ビジネス向けアプリケーション にこそ薦めるMicroORM 石坂忠広 http://opcdiary.net
  • 2. 2 皆さん? RDBMSへの アクセスって どうしてますか?
  • 3. 3 ADO.NETの DataSetだったり
  • 4. 4 Linq to SQL だったり
  • 5. 5 ADO.NETの Entity Framework だったり
  • 6. 6 でも 満足してますか?
  • 7. 7 こういったフレームワーク の作るクエリー文に納得 いってますか?
  • 8. 8 クエリーヒントなんてどう与えるんだよ?
  • 9. 9 WHEREの左右逆じゃね?
  • 10. 10 システム動かさねーとINDEXの 必要有無もわかんねーのか!
  • 11. 11 そもそも、 コードからテーブルを 自動的に作るとか ワケわからないし。 DOAなんだから テーブルが先に決まってるのが 当たり前だろ!
  • 12. 12 こういうことですよね?
  • 13. 13 俺にクエリを 書かせろ!
  • 14. 14 DataReader 最凶!!!!
  • 15. 15 同期実行最凶!!!
  • 16. 16 しかし!
  • 17. 17 だからって、DataReaderではデー タを入れるクラスやそのリストに データ押し込むコードを書かなくて いけなくてメンドイよね
  • 18. 18 わかります
  • 19. 19 お客さん。 良いものが有ります。 注)写真はイメージです
  • 20. 20 MicroORM!!
  • 21. Micro ORM  うすーいレイヤーでDBへのアクセスを楽にする  クエリービルディングとかしないので、クエリーはプログラマがSQL文を 書く   クエリーヒントのような様々テクニックを駆使できます クエリを実行して、DTO(Data Transfer ObjectあるいはPOCO) にデー タ挿入するところはやってくれる 21
  • 22. 22 ということで、
  • 23. 23 Dapper
  • 24. Dapper - a simple object mapper for .Net  多分.NET一番ポピュラーなMicroORM  結果セットが帰ってくるQueryと帰ってこない実行のみのExecute二つの メソッド。  どちらもADO.NETのConnectionの拡張メソッドとして実装されている  クエリ引数とオブジェクトプロパティとの紐付け、結果セットのフィール ドとオブジェクトプロパティとの紐付けはシンプルに「名前」で解決  パフォーマンスはDataReaderとほぼ同じ。   と言うか、中はDataReader。 Stack Overflowの中の人Sam Saffromが作った 24
  • 25. Dapperの導入 Nuget! 25
  • 26. 単純なクエリー private static void Main(string[] args) { string connecttionString = @"hogeohoge"; using (var con = new SqlConnection(connecttionString)) { int ret; con.Open(); //データ抽出 var logs = con.Query<Log>("SELECT Id, TimeStamp, Description FROM Log"); logs.ToList() .ForEach(l => Console.WriteLine( "{0}, {1}, {2}", l.Id, l.TimeStamp, l.Description)); } } 26
  • 27. INSERT private static void Main(string[] args) { string connecttionString = @"Hoge"; using (var con = new SqlConnection(connecttionString)) { int ret; con.Open(); //データ追加 ret = con.Execute("INSERT Log(TimeStamp, Description) VALUES(@tm, @desc)", new { tm = DateTime.Now, desc = "Description" }); Console.WriteLine("{0}行追加しました。", ret); } } 27
  • 28. 結果セットを返す ストアードプロシージャ //ストアードプロシージャの実行 var logs = con.Query<Log>( "GetLogs", new { param1 = DateTime.Now.AddHours(1.0) }, commandType: CommandType.StoredProcedure); logs2.ToList().ForEach( l => Console.WriteLine("{0}, {1}, {2}", l.Id, l.TimeStamp, l.Description)); 28
  • 29. 29 あとはlinqで 嬲ってあげるだけ
  • 30. 30 すばらしい!
  • 31. Dapper以外のMicroORM  Massive   https://github.com/robconery/massive PetaPoco  http://www.toptensoftware.com/petapoco 31
  • 32. まとめ 今まで蓄えてきたSQLの知識やク エリチューニングの技術を余すこ となく投入できるので、ビジネス アプリケーション開発の現場にこ そMicroORMが相応しい!!! 32
  • 33. 33 お知らせ
  • 34. 34 今年もやります
  • 35. 35 C# Advent Calendar 2013
  • 36. 36 http://bit.ly/CSADC2013 で君を待つ!
  • 37. 37 No code, No life.