1

私はHibernateを使用しておらず、それはまったく有効な代替手段ではありません。ADO.NETをベースにしたフレームワークを開発しました。このフレームワークには、データベースエンティティごとにデフォルトの演算子があります。

たとえば、データアクセスレイヤーには、次のようなデフォルトの演算子があります。

Insert
Update
Delete
Get
GetAll

このメソッドにアクセスするには、以下のサンプルコードとして機能します。

DataAccess.Order daoOrder;

Entity.Order entityOrder;
DataAccess.Order daoOrder;

entityOrder = new Entity.Order();
entityOrder.ID = 1090;

daoOrder = new DataAccess.Order();
daoOrder.Insert(entityOrder);

私は静的メソッドの使用を考えていたので、コードは次のように単純になります。

Entity.Order entityOrder;

entityOrder = new Entity.Order();
entityOrder.ID = 1090;

DataAccess.Order.Insert(entityOrder);

システムに30個のテーブルと30個のエンティティがあるとします。静的オブジェクトとして実行されている30個のDataAccessオブジェクトが必要です。この静的構造により、ガベージコレクターのコストが低くなるため、プロセッサーサイクルが節約され、メモリが節約されます。

これらの方法で、BusinessおよびDataAccessの一般的な演算子に静的メソッドを使用する必要がありますか?このアプローチの長所と短所について話していただけますか?(つまり、メモリ、パフォーマンス...)

4

2 に答える 2

3

上記の 2 つのオプションのパフォーマンスの違いは、事実上存在しません。私は、ドメイン モデルやその他のビジネス要件を考慮して、管理できる最もクリーンで柔軟な設計を採用し、稼働後のパフォーマンス チューニングについて心配します。システムを構築する前にボトルネックを推測しようとしないでください。

静的パフォーマンスとインスタンス パフォーマンスの分析については、Greg Beech によるこの投稿を参照してください。

彼の結論:

メソッドを 20 億回呼び出すと、メソッドを静的にすることで約 5 ミリ秒節約できます。これは、メソッド呼び出しごとにほとんど節約できません。

于 2009-07-13T19:49:48.873 に答える
1

このクラスで静的メソッドを使用すると、このクラスと対話するすべてのオブジェクトが高度に結合されます。実際のところ、あなたのコードは十分にテスト可能ではありません。私があなただったら、静的メソッド/クラスとシングルトンの使用を避けます。アプリを試運転したくない場合を除きます。

于 2009-07-13T19:57:33.087 に答える