0

私は、大量のトランザクションと複雑なクエリを使用して、MSSQL サーバーや PostgreSQL などの複数のデータベースに取り組んでいます。単純なjdbcはORMよりも高速であることを検索しました。同じ作業に対して異なるデータベースに対して異なるクエリを作成したくないため、また標準化された私のdaoレイヤーに対してもORMを使用することを考えていました。外部キーを使用せずにデータベース テーブルをマッピングしています。Apache Cayenne のような ORM では、外部キー制約を使用してテーブルをマッピングする必要があるため、結合またはその他の複数のテーブル操作を使用できます。使いやすいですか、ORMまたは単純なjdbcで問題ありませんか。

4

1 に答える 1

0

問題の説明から、関係するトレードオフについては既に理解しています。したがって、これは実際には、これらのトレードオフに基づいて自分で決定する必要があります。

ここでの唯一のアドバイスは、パフォーマンス要件を再確認することです。ORM はオブジェクトの作成、格納、および管理のオーバーヘッドを導入しますが、いくつかのケースを除いて、より良い抽象化のためにこのオーバーヘッドを無視しても問題ありません。また、JDBC を使用する場合、ResultSet をオブジェクトに変換するために独自のコードを記述することになることが非常に多く、それによって独自のオーバーヘッドが発生します。そのため、クリーンなオブジェクト モデルとそれを管理するフレームワークのすべての利点を失いながら、より高速なコードを作成できない可能性があります。

したがって、私自身の好みは、より優れた抽象化 (この場合は ORM) を採用し、フレームワーク ツールを使用してパフォーマンスを最適化することです。たとえば、大きな ResultSet の処理を​​高速化するために、Cayenneはいくつかの手法を提供します: 結果イテレータ、DataRow クエリ、ページ分割されたクエリなど。

一方、データをエンティティとしてきれいにモデル化できない場合は、 JDBC やMyBatisなどを使用します。たとえば、自然な関係がない場合、すべてのアクセスはストアド プロシージャなどを介して行われます。しかし、あなたのケースとは思えません。

于 2015-09-26T17:36:29.970 に答える