5

ビジネス層とデータ層 (JDBC) が密結合している私のプロジェクトの ORM ソリューションを評価しています。Cayenne の PoC を開始しました。私の要件は次のようになります a) データベーススキーマが既に存在する b) スキーマは非常に細かいレベルです。つまり、リアルタイムの Java オブジェクトは、テーブルを結合することによってのみ派生します。c)現時点では、読み取り操作を実行したいだけです(基準を入力してリストを正確にフィルタリングおよびソートするため)

これまで、私が Cayenne で行った観察は次のとおりです。1) テーブルとオブジェクトは密接に結合されています。Modeler は、関連付けられたテーブルなしで Java オブジェクトを作成することを許可していません。2) 名前付きクエリの出力を Java オブジェクトにマップして、アプリケーションが必要とする方法でリストを取得する簡単な方法を見つけることができませんでした。3)また、式が名前付きクエリで機能するかどうかもわかりません。

私の要件に最適な選択についてあなたの意見を知りたいですか?

前もって感謝します。

4

3 に答える 3

5

ORM ツールまたは JPA プロバイダーを選択する必要がある場合、Cayenne は広く使用されていないようであり、その背後にあるコミュニティはそれほど大きくなく、これが懸念事項であるため、Cayenne にはなりません。したがって、技術的な点について議論する必要はありません。たとえば、Cayenne 2.0 は煩わしい、インターフェイスを実装する、またはスーパークラスを拡張する必要があります (Cayenne 3.0 は POJO をサポートしていますが、2 年以上経った今でもベータ版です...)。いいえ、実際には、ORM ツールが必要な場合に、デファクト スタンダードである Hibernate を選択しない正当な理由はないと思います。

しかし...

あなたの要件を考えると、ORMは実際には最良の選択ではないかもしれません.b)の理由で、代わりにiBatis(O / Rマッパーではなく、データマッパーです)を使用することを検討します.

于 2010-02-25T22:40:57.930 に答える
4

Cayenne には多くの非常に優れた機能があり、プラス面として、プロジェクトで使用できるオープン ソース ツールが多数あります。Hibernate が合う人もいれば、Cayenne が合う人もいます。主に次の要因により、Cayenne は Hibernate よりもはるかに優れていました。

  • 非常に役立つユーザー コミュニティです。Hibernate は少し研ぎ澄まされる可能性があります。
  • 大規模なコード カバレッジを提供する多数のテストを備えた非常に堅牢なコード ベース
  • ROP (3 層) のサポート。必要な場合、これ自体が大きな機能です。
  • 優れた継承サポート
  • カイエンモデラー

はい、Cayenne のアプローチは、オブジェクト エンティティ (データベースにマップする Java クライアント) がスーパークラスを拡張することです。これにより、Hibernate よりもいくつかの明確な利点が得られ (Cayenne がオブジェクトのライフサイクル全体を制御します)、一部の人々にとっては複雑さが生じます。

また、Cayenne がコンテキスト (後で一緒にコミットされるオブジェクトと変更のグループ) を管理する方法が非常に直感的であることもわかりました。

あなたの質問について:

1) Cayenne では、テーブルへの 1 対 1 のマップなしでオブジェクト エンティティを作成できます。特に継承をモデル化するときは、常にそうしています。

2) SQLTemplate を使用すると、名前付きクエリを取得できますが、ORM がデータベースに直接クエリを作成する自然な方法に反対しているため、ほとんどの ORM はこのアプローチから遠ざかることがわかります。ポイントは、可能な限りデータベースを抽象化することです。

3) SQLTemplate を使用すると、ほぼ何でも実行できます。繰り返しになりますが、ORM の採用は、JDBC の単なるラッパーではなく、アプリケーションを作成するための戦略に関するものです。そのメリットは非常に大きく、私たちのプロジェクトも恩恵を受けていると思いますが、それはあなたの目標次第です。

于 2011-05-12T02:31:57.030 に答える
0

同意しましたが、カイエンには非常に優れた機能がたくさんあります。しかし、プロジェクトで継承を使用して作業を行う必要がある場合(言及していませんが)、Cayenneはオプションではありません。「優れた継承サポート」は行いません。

水平継承-https : //issues.apache.org/jira/browse/CAY-795-2007年5月30日からオープン。2010年5月18日以降のhttp://cayenne.195.n3.nabble.com/Vertical-inheritance-td827636.htmlでの垂直継承に関するディスカッション

私は個人的なプロジェクトでよく使用し、生産性の向上は素晴らしいです。

于 2012-10-18T12:54:57.300 に答える