5

私は数年続くと思う新しいプロジェクトを始めています。使用するORMフレームワーク(または使用するかどうか)を決定する段階にあります。経験のある人なら誰でも、ormフレームワークが実際のアプリケーションで使用されているかどうかを教えてもらえますか。私が念頭に置いている問題は次のとおりです。エンティティを作成および変更すると、ormツールによってテーブルや列などが生成されます。ただし、プロジェクトが稼働して本番環境に移行した後は、特定のデータベースを変更できなくなります。これはプロジェクトの進行を妨げる可能性がありますか。たとえば、ibatisのようなフレームワークを使用した場合、データベースの変更に基づいてsqlステートメントを調整するだけで済みます。ORMツールがライブ環境で生き残ったかどうか誰かに教えてもらえますか?私のオフィスでは、ずっと前に行われたJavaベースのERPを使用していますが、ORMフレームワークを使用して行われたことはありません。

よろしく。ジョシュ

4

4 に答える 4

2

初期の開発とプロトタイピングには、自動生成されたスキーマのみを使用してください。生成されたDDLは、経験豊富なDBAを満足させることはほとんどありません。さらに、データベースは現在のアプリケーションコードよりも適切に長持ちするため、通常、データベースの設計に時間を費やす価値は十分にあります。

マッパーを選択するときは、柔軟なマッパーを選択し、オブジェクトに取りつかれたマッパーに近づかないようにしてください。これらは、限られたデータベースのカスタマイズしかサポートしていないことが多いためです。JPAがカスタムタイプマッパーをサポートしていないのと同様に、不十分なストアドプロシージャの統合が頭に浮かびます。

IBatisEclipseLinkなどのオブジェクトマッパーは、ほとんどすべてのものをマップできるため、安全な選択であり、優れたドメインモデルと気の利いたスキーマデザインの両方を作成できます。また、Spring JDBCは非常に長い道のりを歩んできました(特に非常に便利なSimpleJDBCTemplate)。したがって、技術的にはORMではありませんが、面倒なJDBCボイラープレートコードを記述せずに必要なことを実行できます。

于 2010-04-20T09:08:55.020 に答える
2

ORMは、実際のアプリケーションで非常に広く使用されています。あなたが言及したスキーマ変更の問題は、通常、次の2つの方法のいずれかで処理されます。

  1. 以前の回答で示唆されているように、データベースでスキーマを手動で維持し、ORMにデータベースで表示されるものと一致するようにスキーマを更新させることができます。

  2. ORMに、データベースのスキーマをオブジェクトモデルに関する独自の情報と照合させ、変更があった場合に更新するために必要なクエリを生成させることができます。

私の経験では、まともなORMは#1を処理できるはずであり、ほとんどが#2を管理できるようですが、それほど普遍的ではありません。

どちらが良いかというと、それはデータベースとオブジェクトモデルの関係をどのように見るかに大きく依存します。

データベースに主な関心があり、ORMを使用してテーブルとフィールドにOOラッパーを提供し、テーブルとフィールドに簡単にアクセスできるようにする場合は、おそらく#1を使用して、データベースを完全に制御する必要があります。

一方、オブジェクトモデルを最高のものと見なし、主にデータベースをダム永続化メカニズムとして使用し、ORMがそのタスクを簡素化するのに役立つ場合は、おそらく#2を使用して、集中できるようにする必要があります。オブジェクトモデルであり、基盤となるデータベースの詳細について心配する必要はありません。または、データベース側でのスキーマの変更をまったく気にすることなく、単純なオブジェクトの永続性をより適切にサポートするために、キー/値ストア、オブジェクトグラフ永続化エンジン、またはその他の形式のNoSQLデータベースを確認することをお勧めします。

于 2010-04-20T09:13:16.303 に答える
1

私はHibernate+JPAの本番環境で数年間使用しています。ただし、ORMスキーマの生成に依存したことはありません。この方法でスキーマを完全に制御できるわけではなく、ORMが常に最適なスキーマを生成するとは限らないため、これは一般的に悪い習慣だと思います。Liquibaseのようなものを使用して、はるかに優れたアイデアのIMOでスキーマの移行を追跡します。

于 2010-04-20T08:53:53.137 に答える
0

私はHibernateを数年使用していますが、非常に満足しています。スキーマジェネレーターは新しいデータベースを作成するためにのみ使用しますが、アップグレードには人工のSQLスクリプトを使用します。

スキーマのアップグレードを確実に自動化することはできないと思います。たとえば、フィールドの名前を変更すると、自動ツールによってフィールドが削除されて新しいフィールドが追加され、コンテンツが失われます。

于 2010-04-20T09:59:50.697 に答える