2012-01-17 3 views
1

私はHibernateを長年使用していましたが、問題はありませんでしたが、私の作業のほとんどがCRUDアプローチを必要としていました。意のままに。ORMフレームワークを挿入専用/クエリのみのアプリケーションに使用

2つの別々のアプリケーションを作成したい人がいます.1つはバルク挿入で、もう1つは挿入されたデータを検索します。

この場合、永続性は少し役に立たないので、チームはHibernateを使用せず、クエリアプリケーションでjOOQのようなものを使用することを望みます。

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

+0

あなたは、本当にフィットしない穴にHibernateを収めようとしているか、少なくとも太った男を痩せたものに入れようとしているようです。 – AHungerArtist

+0

+1純粋なORMはあまりにも薄いので、良いアナロジーのために+ 1、私は痩せたり、何かシンナーを使用して休止するだろう – javaNoober

答えて

4

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

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

    / TOP .. START ATなどの句はデータベースにどのようにマップされていますか?
  • 変数はどのように結合されていますか?
  • 組み込み関数はどのようにサポートされていますか?
  • 派生テーブルはカッコで囲む必要がありますか?

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

  • あなたは完璧な技術選択されていない休止状態を使用しますか、しかし、あなたはよく知っているので、リスクを見積もることができましたか?これは、チームの全員がHibernateを知っていて好きで、新しいことを学ぶ時間がほとんどない場合に行く方法です。

  • もっと適切なフレームワークを使用したいと思いますが、それをよく知っていないため、すべてのリスクを見積もることはできません。これは、あなたがHibernateに有利な唯一のもので、新しいフレームワークを学ぶ時間があれば、行く方法かもしれません。あなたが考慮したいと思うかもしれません他のフレームワーク:

  • それとも、もっと複雑なもののためのシンプルなクエリとプレーンSQL/jOOQ /春/ MyBatisの/などのHibernate技術と使用を混在させることができます。

  • また、ストアドプロシージャ(Oracleを使用している場合はPL/SQLなど)を使用して一括処理とOLAPクエリを処理し、データベースに処理させることはできますか?これは、あなたのチームに優れたDBAまたはデータベース専門家がいれば行くことができます。

正解または間違いはありません。しかし、あなたは実用的な決定を下す必要があります。

+0

前にjOOQについて聞いたことはありません。 – AHungerArtist

+0

答えをありがとう、私はこれがOLTP/OLAPの非常に確かな説明であり、チームが考える必要があると考えています。 – javaNoober

+0

@javaNoober:ありがとう。私は、あなたが最終的なチームの決定を追加の回答としてここに投稿できるのであれば、この質問の将来の訪問者にとっては興味深いことだと思います! –

1

Hibernateはオブジェクトリレーショナルマッピングです。それらが一括挿入と未加工データストリームの報告のみを行う場合は、多分オブジェクト表現を必要としません。 Hibernateは、ある種のオブジェクト表現が必要な場合に便利です。

+0

私はそれを認識していますが、 SQL "レイヤーと異なるDB移植性を備えていますが、私たちが本当にオブジェクト表現で作業してほしいと思っていますが、Hibernateが大きすぎるかもしれないと思います – javaNoober

1

これは非常に可能です。 Hibernateは、他のアプリケーションによって同時に更新されるデータベースで非常に効果的です。唯一の問題は、Hibernateの内部キャッシングタイムアウトです。これは、データベースで更新されるレコードと更新されたデータを参照するHibernateの間にわずかな遅延(数分)がある可能性があることを意味します。私はこれが構成可能だと信じています。

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

1

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

+0

Sormulaは面白そうです。しかし、GPLライセンスを使用できない場合(おそらくこのプロジェクトのように)、無料ではないと言わなければなりません。 –

+0

GPLv3です。私の意図は、オープンソースとして配布することでした。私は私のライセンス声明に何かを見逃しているのでしょうか? http://www.sormula.org/license –

+0

いいえ、実際にはあなたのページに十分な情報があります。私の悪い –

関連する問題