2017-08-03 4 views
0

この質問があまりにもオープンエンドであるか曖昧な場合は私を許してください。ここでの私の意図はあなたの意見を得ることであり、ここで正しい/間違った答えではありません。私は、さまざまなテーブル/ビューに存在するさまざまな属性を選択し、それらをフィルタリングし、集約し、それらをグループ化することによって、エンドユーザーが随時レポートを生成できるようにするJavaベースのレポートアプリケーションを設計するつもりです。 ORMをデータアクセスとデータベース抽象化に使用するかどうかについて、私の同僚のグループと面白い会話をしています。 ORMの主な目的は、開発者が物理的構造(表、列など)よりもオブジェクトの観点から考えることを完全に開始しなければならないことを理解しています。私は個人的には、特に動的な性質と実行時に複数のテーブルを関連させたり、さまざまな集約を機能別にグループ化したりする柔軟性のために、アドホックなレポート作成がORMを使用することはあまりありません。 ORMの使用を無効にするため、ORMを使用してネイティブSQLを構築するのは良いと生産的な考えではないでしょうか。思考?Java | ORM |休止状態|報告アプリケーションの考えのために

+0

JDBC /ネイティブSQLは、休止状態、JPAなどの任意のORMと比較して、レポート処理が高速です。ここの違いを参照してください - https://stackoverflow.com/questions/1575762/orm-technologies-vs-jdbc –

+0

ネイティブクエリーがここに入りますか?はい、ネイティブクエリのみを記述する必要がある場合、Hibernateを使用することはあまり意味がありません。 –

答えて

0

通常、このようなレポートは、複数のソース(エンティティ)からのデータを結合するだけでなく、複雑なフィルタリングや集計を追加します。

SQLベースのアプローチははるかに柔軟で、はるかに優れたパフォーマンスを備えています。

SQLを既存のエンティティにマッピングすることはできますが、私の経験から、純粋なエンティティよりはるかに頻繁に別のDTOが必要になります(90%のレポートの列が違うと言います)。他のテーブルなどを使用して列が時々少ない場合があります。

したがって、純粋なSQLであり、マッピングにはJDBCTemplateを使用できます。 MyBatisをクエリに追加することもできます。

ORMはからCRUD(とR getByIdとgetAllの最も単純なケース)をカバーするのが良いです。複雑なR(読取り)はORMから実行する必要があります。

ちょうど私の2セントです。