2

ORM の Hibernate を仮定します。

これをどう聞いたらいいのかわからない。別のアプリケーションの一部を置き換えることができるアプリケーションを構築したいと考えています。たとえば、「大きな」アプリと呼ばれる、さまざまなモジュールを備えたアプリケーションがあるとします。このアプリケーションは、人事、財務、購買、スキル セットなどを処理する可能性があります。しかし、何らかの理由で、スキル セット モジュールは好きではありませんが、アプリケーションの残りの部分は好きです。残りの「大きな」アプリが使用するのと同じデータベースを使用するアプリを構築したいが、その部分のフロントエンドとして私のソフトウェアを使用したい。

アプリをビルドして、ORM なしでデータベースに直接ヒットさせることができました。私の質問は、ここで ORM を使用する利点があるかどうかです。「大きな」アプリがなくなり、別のアプリが購入された場合、直接ヒットするのではなく休止状態を使用しているため、スキルセットのバージョンを引き続き使用できるため、あると考えています。私はまだ学習中ですが、私のアプリケーションは私が名前を付けたオブジェクトを使用していて、今説明した場合、マッピング ファイルのみを変更するか、コードをほとんど変更する必要はないと思いました。

別の例を次に示します。レガシー アプリケーションとレガシー データベースがあります。データベース X を使用します。データを取得するために使用される古いターミナル エミュレーター アプリケーションはもう好きではないので、グラフィカル バージョンが必要であると判断しました。アプリケーションで休止状態を使用でき、最終的にレガシー データベースを削除して最新の Oracle または SQL Server に変更することを決定した場合、頭痛を最小限に抑えることができますか? それとも、私のデータベースはどうせ問題にならないほど大きく変更されるのでしょうか (新しいデータベースに変更すると、より多くの情報を取得する必要があることを示唆しています)。

休止状態/ORMが利点である場合とそうでない場合がある理由を誤解している場合は、コメントを期待していました。

ありがとうございました。

4

4 に答える 4

1

ある DBMS から別の DBMS への切り替え (Oracle から SQL Server へ) は、​​ORM を使用すると確実にはるかに簡単になることの 1 つです。

ある「ビッグ アプリ」から別の「ビッグ アプリ」への切り替えに関しては、ORM の使用がそれほど役立つかどうかは疑問です。データベース構造とビジネス ロジックが大きく異なるため、多くのコードを書き直さなければならなくなる可能性があります。

于 2009-04-27T18:17:08.870 に答える
1

データベーススキーマがまったく異なるものに変更された場合、休止状態から大きなメリットがあるとは思いません。マッピングだけでなく、特にデータベースに「構造」が追加された場合(テーブル、列など)を変更する必要がある場合がありますスキーマのもの)。とはいえ、データベースがほとんど同じように構成されていて、列名とテーブル名だけが変更され、いくつかのテーブルがマージされているなどの場合、マッピングを変更するだけで十分です。

しかし、データベースに依存しないために hbernate を使用することを強くお勧めします。これは非常に簡単な方法です。

そして、データベース全体が変更された場合、それがまったく役に立たないという理由だけで、信じられないほど多くの他の力があるため、ほとんどの場合、直接 DB アクセスよりもそれを選択します。

最後に、データ アクセスを抽象化するリポジトリ パターンなどのサービス レイヤーを使用することを検討できます。これにより、データベースが変更されてもアプリケーションのビジネスを変更する必要がなくなります。

于 2009-04-27T18:17:46.390 に答える
0

未知のものと既知のものに基づいて決定を下すことは、一般的に悪い考えだと思います。データ アクセス/永続化戦略、どの車を購入するか、またはどの大学に進学するかを決定する場合は、何が起こるか、何が起こらないかを心配するのではなく、自分が現在必要としていることがわかっていることに最も重点を置く必要があります。明日。

したがって、ORM を検討するとき、アプリの「廃止」や DBMS の変更などについてはあまり心配しません (すでに話題になっている場合や、社内で過去にそのようなことがあった場合を除きます)。これらが決して起こらないことではないと言っているのではなく、保守性、パフォーマンス、および開発者の生産性という一般的にはるかに重要な考慮事項を後回しにする必要があるということです。

つまり、問題を解決し、現在の要件を満たす能力に基づいて ORM を選択してください。

于 2009-04-28T01:53:49.553 に答える
0

Hibernate Tools を使用してドメイン オブジェクトを生成できます。これを行うと、手間がかからず高速になります。ただし、すべてのオブジェクトを手で書くと、死んでしまいます。アプリの一部を書き直して、休止状態をよりよく理解するのは良い考えだと思います。

于 2009-04-27T18:52:18.007 に答える