1

私は何年もの間 Hibernate を使用してきましたが、問題はありませんでしたが、私の仕事のほとんどが CRUD アプローチに関係していることに気付きました。

これの問題点は、一括挿入するアプリと、挿入されたデータを検索するアプリの 2 つのアプリを作りたいという人がいるということです。

この場合、永続性は少し役に立たないため、チームは Hibernate を使用せずに、挿入アプリで生のクエリを使用し、クエリ アプリでjOOQのようなものを使用したいと考えています。

それは正しい呼び出しですか?または、「私のお気に入りの orm フレームワーク」以外に、Hibernate を使用するように説得するにはどうすればよいでしょうか? または、考慮されていない他のソリューションもありますか?

4

4 に答える 4

4

免責事項: 私はjOOQの作成者であるため、この回答は少し偏っています。

jOOQ は、同僚が言及したユースケースのために正確に設計されました。あなたのプロジェクトでは、OLTP (CRUD) ではなくOLAPを行っています。これは、多くの面で jOOQ の非常に優れた使用例です。jOOQ は、ウィンドウ関数、ピボット テーブル、再帰クエリ、ストアド プロシージャ、配列、およびネストされていない配列などの OLAP 機能の使用を推奨しています。また、jOOQ は、回避したいすべての SQL 互換性の微妙な点を備えた 13 の異なるデータベースもサポートしています。いくつかの例:

  • LIMIT .. OFFSET/TOP .. START ATなどの句はどのようにデータベースにマップされますか?
  • 変数はどのようにバインドされていますか (キャストの有無にかかわらず)?
  • 組み込み関数はどのようにサポートされていますか?
  • 派生テーブルは括弧で囲む必要がありますか?

ただし、これらの互換性の側面はすべて、Hibernateでも非常によくカバーされています。したがって、あなたの質問は次のようになります。

  • 完璧なテクノロジの選択ではないが、よく知っていてリスクを見積もることができる Hibernate を使用しますか? これは、チームの全員が Hibernate を知っていて気に入っていて、新しいことを学ぶ時間がほとんどない場合の方法です。

  • それとも、より適切な別のフレームワークを使用したいのですが、それをよく知らないため、すべてのリスクを見積もることができませんか? これは、Hibernate を支持する唯一の人物であり、新しいフレームワークを学ぶ時間がある場合に最適な方法です。検討したいその他のフレームワーク:

  • または、テクノロジーを組み合わせて、単純なクエリには Hibernate を使用し、より複雑なクエリにはプレーン SQL / jOOQ / Spring / myBATIS / などを使用できます。

  • それとも、ストアド プロシージャ (たとえば、Oracle を使用している場合は PL/SQL) を使用して一括処理と OLAP クエリを処理し、データベースに任せることができますか? これは、チームに優れた DBA またはデータベース スペシャリストがいる場合に適した方法です。

正解も不正解もありません。しかし、現実的な決定を下す必要があります。

于 2012-01-18T11:55:27.743 に答える
1

これは非常に可能です。Hibernate は、他のアプリケーションによって同時に更新されるデータベースで非常にうまく機能します。唯一の問題は、Hibernate の内部キャッシュ タイムアウトです。これは、データベースでレコードが更新されてから、Hibernate が更新されたデータを確認するまでにわずかな遅延 (数分) が発生する可能性があることを意味します。これは設定可能だと思います。

JooQ よりも Hibernate を好むという議論は、アプリケーションがデータを概念化する方法の 1 つになります。Hibernate は、データの行表現をオブジェクトに抽象化します。一部のプログラマーはそれを好まず、手動で行うことを好みます。これが彼らが JooQ を使用したい理由かもしれないので、アプリケーションの構造について彼らと話し合う必要があります。

于 2012-01-17T23:39:57.250 に答える
1

Hibernate はオブジェクト リレーショナル マッピングです。一括挿入と生データ ストリームのレポートのみを行う場合、オブジェクト表現は必要ないかもしれません。Hibernate は、データの何らかのオブジェクト表現が必要な場合に役立ちます。

于 2012-01-17T23:35:52.083 に答える
1

sormulaは CRUD 対応の ORM です。JDBC と sormula を混在させることができます。一括挿入は行いませんが、オブジェクトのコレクションを挿入するためのinsertAll(java.util.Collection)があります。

于 2012-01-18T00:13:44.020 に答える