ADO.NET vs ORM (Entity Framework, Dapper)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-戻る
--[[データアクセスのいろいろ]]
--[[VS系コンテンツ]]
* 目次 [#r017928e]
#contents
*概要 [#h777e793]
[[ADO.NET>#d8190ea9]]、[[Entity Framework>#ufc012af]]、[[...
トレードオフがあるので、新しい技術を使っておけばイイとい...
*[[生のデータプロバイダ系(ADO.NET)>ADO.NETデータプロバ...
SQLを使用して、二次元表形式の論理データを自由に取得できる。
**DataReader, DataSet [#a3095c41]
***特徴 [#eefba248]
Bean(POCO)にORMではなく、論理データ独立な二次元表(DataSe...
-DataAdapter は DataSet オブジェクトとデータ ソース間のブ...
-DataSet の機能が必要ない場合は、DataReader を使用したほ...
-[[非接続型データアクセス>ADO.NET]]を実行する場合はDataSe...
--データをローカルにキャッシュし操作する場合。
--サーバーで取得・更新、クライアントで編集等、~
物理境界を超えてデータを持ち回って処理を行う場合。
--Windows フォーム コントロールとの連結し、対話的に編集を...
DataSet
├DataRelationCollection
├ExtendedProperties
└DataTableCollection
└DataTable
├DataColumnCollection─DataColumn─ExtendedProperties
├PrimaryKey
├Constraints
├ChildRelations
├ParentRelations
├ExtendedProperties
├DataView
├DataRowCollection─DataRow
***Bean(POCO)変換 [#x6e0b188]
[[実装は、それ程、難しくない。>AutoMapper#ob11e4cd]]
***適合するシステム・アプリケーション [#w66b9a13]
-情報系システム
--多種・多様なビュー(二次元表形式の論理データ)にアクセ...
--参照先のテーブルや取得するカラムを動的に変更するような...
-基幹系システム
--複雑なデータクセスに対応する柔軟性と、~
大量データの処理に対応するパフォーマンスを両立させる必要...
--参照したビュー(二次元表形式の論理データ)を元に更新処...
**[[DataAdapter]], [[TableAdapter]] [#j926d919]
ORM的なソリューションだが、~
今となっては、中途半場で、あまり利用されていない。
***特徴 [#i7223bca]
-[[ADO.NET]]のラッパーライブラリ。
-[[非接続型データアクセス>ADO.NET]]のDataSetが前提。
***適合するシステム・アプリケーション [#g2e9fc1f]
JIONなどもサポートしているもよう(下記参照)なので、~
頑張れば、情報系システム、基幹系システムへの応用も可能と...
-参考
--Join を使用して TableAdapter を更新する (c#) | Microsof...
https://docs.microsoft.com/ja-jp/aspnet/web-forms/overvie...
**Open棟梁の[[動的パラメタライズド・クエリ>https://opento...
***特徴 [#q9861167]
-[[ADO.NET]]のラッパーライブラリ。
-[[ADO.NET]]をラップし、動的SQL編集機能を同梱。
***適合するシステム・アプリケーション [#ee069a8d]
-SQL編集処理が複雑になるエンプラのドメインで使える。
--SQL定義をパラメタセットによって編集したい(S2DaoやiBATI...
--メソッド(=LINQのメソッド ベースのクエリ構文(メソッド...
でクエリ編集という方式は、エンプラのドメインに必要とされ...
*ORM系 [#q166dadc]
-基本的にSQLを使用せず、概念スキーマに準拠したオブジェク...
-プログラム側のデータの持たせ方が「2次元表」 vs Bean(POCO...
**[[Entity Framework]] [#ufc012af]
[[Entity Framework]]は高機能で複雑なため、~
ORM自体の問題と、切り分けが難しい別の問題を持っている。
***特徴 [#tb44de0f]
以下のような、[[3つの開発スタイル>Entity Framework#m1aab...
-[[モデルファースト>Entity Framework#e8fd5f15]]
--[[Entity Framework]]の基本的な使い方。
-[[DBファースト>Entity Framework#k0847c21]]~
--DB設計者(DA、DBA)の設計したDBを使用する。
--基幹系システムやビジネス・アプリケーションではコチラを...
-[[コードファースト>Entity Framework#rcec17e4]]
--Entityの設計がDBスキーマに反映される。既存DBにも適用可...
--以下の様なシステム・アプリケーションではコチラを使用す...
---クライアント・アプリケーション
---プロトタイプ・モックアップのデータアクセス部の開発
---SQLを駆使しない、データアクセスが比較的簡単なシステム...
***適合するシステム・アプリケーション [#e851970c]
-データをオブジェクトとして保持しセーブ・ロードを繰り返す...
-単純なユーザ・ストアにアクセスして、ユーザ・データを更新...
-1ページ、1テーブル(ビュー)&1トランザクション的な、...
-例えば、クライアント・アプリケーションや、[[前述のシステ...
***参考 [#x9c2bdb1]
以下が参考になる。
-[[Entity Framework の懸念]]
-[[Entity Framework の調査]]
**[[Dapper]] [#cb059443]
[[Dapper]]は単純な分、ORMの良さや悪さを分析し易い。
***特徴 [#i5375712]
-厳密に言えば、ORMではなく、Micro-ORM(DataMapperとかTabl...
-SQL(の入出力パラメタ)と、Bean(POCO)の間のマッピングを...
***感想 [#f04a645b]
[[Dapperを使って認証基盤のユーザストアの永続化を実装して...
-[[Dapper]]は正確にはORMではないので、
--階層構造を持つオブジェクトとストレージ間の同期(セーブ...
--複雑なデータアクセス処理(特に検索条件や射影などを動的...
>などの用途には向かない。
-ただしRDBMSをNoSQLやX.500などのストアとコンパチにするよ...
オブジェクト <---> ストア的な実装が必要とされるので、用途...
***適合するシステム・アプリケーション [#ve277fa2]
以下の様なケースでは、[[Dapper]]がイイのでは無いかと考え...
-データストア、データアクセスが単純なケース。
-サーバーをJSON吐く土管化するようなケース。
-RDBMSをNoSQLやX.500などのストアとコンパチにするようなケ...
*分析 [#z962fdba]
データアクセスのフレームワーク、其々に、
-[[生のデータプロバイダ系>#mf0793cf]]はSQL編集処理の柔軟...
-[[ORM系>#od8163b5]]は、コーディングが容易化されているが...
(Bean(POCO)側が静的なので、SQL側だけ動的化するインターフ...
などのトレードオフがある。
このため、アプリケーションの特性によって、~
そのデータアクセスのフレームワークが適合するか?しないか...
※ 例えば、基本的なORM実装では、オブジェクト操作と永続化操...
オブジェクトに対する変更を無造作に更新するため、未更新...
(基本的に、未更新列を更新対象から外すなどの、きめ細か...
*参考 [#tb2cf9a3]
-レガシーシステムとつきあう - Sansan Builders Box~
https://buildersbox.corp-sansan.com/entry/2019/10/23/110000
-Entity Framework VS LINQ to SQL VS ADO.NET with stored p...
http://stackoverflow.com/questions/2698151/entity-framewo...
**Java ORマッパー [#t80e8d27]
-Java ORマッパー選定のポイント #jsug~
https://www.slideshare.net/masatoshitada7/java-or-jsug
-Hibernateはどのようにして私のキャリアを破滅寸前にしたか ...
https://www.kaitoy.xyz/2017/02/23/how-hibernate-ruined-my...
----
Tags: [[:データアクセス]], [[:.NET開発]], [[:ADO.NET]], [...
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-戻る
--[[データアクセスのいろいろ]]
--[[VS系コンテンツ]]
* 目次 [#r017928e]
#contents
*概要 [#h777e793]
[[ADO.NET>#d8190ea9]]、[[Entity Framework>#ufc012af]]、[[...
トレードオフがあるので、新しい技術を使っておけばイイとい...
*[[生のデータプロバイダ系(ADO.NET)>ADO.NETデータプロバ...
SQLを使用して、二次元表形式の論理データを自由に取得できる。
**DataReader, DataSet [#a3095c41]
***特徴 [#eefba248]
Bean(POCO)にORMではなく、論理データ独立な二次元表(DataSe...
-DataAdapter は DataSet オブジェクトとデータ ソース間のブ...
-DataSet の機能が必要ない場合は、DataReader を使用したほ...
-[[非接続型データアクセス>ADO.NET]]を実行する場合はDataSe...
--データをローカルにキャッシュし操作する場合。
--サーバーで取得・更新、クライアントで編集等、~
物理境界を超えてデータを持ち回って処理を行う場合。
--Windows フォーム コントロールとの連結し、対話的に編集を...
DataSet
├DataRelationCollection
├ExtendedProperties
└DataTableCollection
└DataTable
├DataColumnCollection─DataColumn─ExtendedProperties
├PrimaryKey
├Constraints
├ChildRelations
├ParentRelations
├ExtendedProperties
├DataView
├DataRowCollection─DataRow
***Bean(POCO)変換 [#x6e0b188]
[[実装は、それ程、難しくない。>AutoMapper#ob11e4cd]]
***適合するシステム・アプリケーション [#w66b9a13]
-情報系システム
--多種・多様なビュー(二次元表形式の論理データ)にアクセ...
--参照先のテーブルや取得するカラムを動的に変更するような...
-基幹系システム
--複雑なデータクセスに対応する柔軟性と、~
大量データの処理に対応するパフォーマンスを両立させる必要...
--参照したビュー(二次元表形式の論理データ)を元に更新処...
**[[DataAdapter]], [[TableAdapter]] [#j926d919]
ORM的なソリューションだが、~
今となっては、中途半場で、あまり利用されていない。
***特徴 [#i7223bca]
-[[ADO.NET]]のラッパーライブラリ。
-[[非接続型データアクセス>ADO.NET]]のDataSetが前提。
***適合するシステム・アプリケーション [#g2e9fc1f]
JIONなどもサポートしているもよう(下記参照)なので、~
頑張れば、情報系システム、基幹系システムへの応用も可能と...
-参考
--Join を使用して TableAdapter を更新する (c#) | Microsof...
https://docs.microsoft.com/ja-jp/aspnet/web-forms/overvie...
**Open棟梁の[[動的パラメタライズド・クエリ>https://opento...
***特徴 [#q9861167]
-[[ADO.NET]]のラッパーライブラリ。
-[[ADO.NET]]をラップし、動的SQL編集機能を同梱。
***適合するシステム・アプリケーション [#ee069a8d]
-SQL編集処理が複雑になるエンプラのドメインで使える。
--SQL定義をパラメタセットによって編集したい(S2DaoやiBATI...
--メソッド(=LINQのメソッド ベースのクエリ構文(メソッド...
でクエリ編集という方式は、エンプラのドメインに必要とされ...
*ORM系 [#q166dadc]
-基本的にSQLを使用せず、概念スキーマに準拠したオブジェク...
-プログラム側のデータの持たせ方が「2次元表」 vs Bean(POCO...
**[[Entity Framework]] [#ufc012af]
[[Entity Framework]]は高機能で複雑なため、~
ORM自体の問題と、切り分けが難しい別の問題を持っている。
***特徴 [#tb44de0f]
以下のような、[[3つの開発スタイル>Entity Framework#m1aab...
-[[モデルファースト>Entity Framework#e8fd5f15]]
--[[Entity Framework]]の基本的な使い方。
-[[DBファースト>Entity Framework#k0847c21]]~
--DB設計者(DA、DBA)の設計したDBを使用する。
--基幹系システムやビジネス・アプリケーションではコチラを...
-[[コードファースト>Entity Framework#rcec17e4]]
--Entityの設計がDBスキーマに反映される。既存DBにも適用可...
--以下の様なシステム・アプリケーションではコチラを使用す...
---クライアント・アプリケーション
---プロトタイプ・モックアップのデータアクセス部の開発
---SQLを駆使しない、データアクセスが比較的簡単なシステム...
***適合するシステム・アプリケーション [#e851970c]
-データをオブジェクトとして保持しセーブ・ロードを繰り返す...
-単純なユーザ・ストアにアクセスして、ユーザ・データを更新...
-1ページ、1テーブル(ビュー)&1トランザクション的な、...
-例えば、クライアント・アプリケーションや、[[前述のシステ...
***参考 [#x9c2bdb1]
以下が参考になる。
-[[Entity Framework の懸念]]
-[[Entity Framework の調査]]
**[[Dapper]] [#cb059443]
[[Dapper]]は単純な分、ORMの良さや悪さを分析し易い。
***特徴 [#i5375712]
-厳密に言えば、ORMではなく、Micro-ORM(DataMapperとかTabl...
-SQL(の入出力パラメタ)と、Bean(POCO)の間のマッピングを...
***感想 [#f04a645b]
[[Dapperを使って認証基盤のユーザストアの永続化を実装して...
-[[Dapper]]は正確にはORMではないので、
--階層構造を持つオブジェクトとストレージ間の同期(セーブ...
--複雑なデータアクセス処理(特に検索条件や射影などを動的...
>などの用途には向かない。
-ただしRDBMSをNoSQLやX.500などのストアとコンパチにするよ...
オブジェクト <---> ストア的な実装が必要とされるので、用途...
***適合するシステム・アプリケーション [#ve277fa2]
以下の様なケースでは、[[Dapper]]がイイのでは無いかと考え...
-データストア、データアクセスが単純なケース。
-サーバーをJSON吐く土管化するようなケース。
-RDBMSをNoSQLやX.500などのストアとコンパチにするようなケ...
*分析 [#z962fdba]
データアクセスのフレームワーク、其々に、
-[[生のデータプロバイダ系>#mf0793cf]]はSQL編集処理の柔軟...
-[[ORM系>#od8163b5]]は、コーディングが容易化されているが...
(Bean(POCO)側が静的なので、SQL側だけ動的化するインターフ...
などのトレードオフがある。
このため、アプリケーションの特性によって、~
そのデータアクセスのフレームワークが適合するか?しないか...
※ 例えば、基本的なORM実装では、オブジェクト操作と永続化操...
オブジェクトに対する変更を無造作に更新するため、未更新...
(基本的に、未更新列を更新対象から外すなどの、きめ細か...
*参考 [#tb2cf9a3]
-レガシーシステムとつきあう - Sansan Builders Box~
https://buildersbox.corp-sansan.com/entry/2019/10/23/110000
-Entity Framework VS LINQ to SQL VS ADO.NET with stored p...
http://stackoverflow.com/questions/2698151/entity-framewo...
**Java ORマッパー [#t80e8d27]
-Java ORマッパー選定のポイント #jsug~
https://www.slideshare.net/masatoshitada7/java-or-jsug
-Hibernateはどのようにして私のキャリアを破滅寸前にしたか ...
https://www.kaitoy.xyz/2017/02/23/how-hibernate-ruined-my...
----
Tags: [[:データアクセス]], [[:.NET開発]], [[:ADO.NET]], [...
ページ名: