2

手作りの休止状態マッピング ファイルを使用して開発された元のコード ベースを持つ webapp があります。それ以来、hbm.xml ファイルの「コーディング」にかなり習熟しました。しかし、最近のクールな子供たちはすべて注釈を使用しています。

質問は、コードをリファクタリングして hibernate アノテーションを使用する価値があるかどうかです。ヒップでモダンであること以外に、何か得られるものはありますか? 既存の手動でコーディングされたマッピング ファイルを制御できなくなりますか?

サブ質問は、どのくらいの労力がかかるかということです。 私は自分のデータベースが無駄がなく意地悪であるのが好きです。マッピングは、2 つのセット、いくつかのサブクラス、および約 8 つのテーブルを含む、12 のドメイン オブジェクトのみをカバーします。

親愛なる SOpedians の皆様、情報に基づいたご意見をお寄せいただきありがとうございます。

4

8 に答える 8

7

「壊れていなければ直さないで!」

とにかく、私は昔ながらの POJO/POCO のような人ですが、クールにするためになぜ注釈に変更するのですか? 私の知る限りでは、ほとんどのことをアノテーションとして行うことができますが、より複雑なマッピングは XML としてより明確に表現されることがあります。

于 2008-09-17T11:47:51.200 に答える
4

外部マッピング ファイルの代わりに注釈を使用することで得られることの 1 つは、マッピング情報がクラスとフィールドにあるため、保守性が向上することです。フィールドを追加すると、すぐに注釈が追加されます。1 つを削除すると、注釈も削除されます。クラスまたはフィールドの名前を変更すると、注釈がすぐそこにあり、テーブルまたは列の名前も変更できます。クラスの継承を変更すると、それが考慮されます。後で外部ファイルを編集する必要はありません。これにより、全体がより効率的になり、エラーが発生しにくくなります。

反対に、マッピング ファイルが提供していたグローバル ビューが失われます。

于 2008-09-17T11:46:52.090 に答える
3

私は最近、プロジェクトで両方を実行し、次のことを発見しました。

  1. 私はXMLに注釈を書くことを好みます(Javaの静的型付け、IDEでのオートコンプリート、リファクタリングなどでうまく機能します)。コードとXMLの間を行ったり来たりするのではなく、すべてが一緒に織り込まれているのを見るのが好きです。
  2. クラスのdb情報をエンコードします。一部の人々は、それがひどく受け入れられないと感じています。気になったとは言えません。それはどこかに行かなければならず、それに関係なく、変更のためにWARを再構築します。
  3. 実際にはJPAアノテーションまで行きましたが、JPAアノテーションでは不十分な場合もあるので、Hibernateアノテーションまたはconfigを使用して微調整する必要がありました。
  4. 実際には、アノテーションとhbmファイルの両方を使用できることに注意してください。アノテーションのO部分とhbmファイルのR部分を指定する素晴らしいハイブリッドかもしれませんが、それだけの価値があるよりも厄介なように聞こえます。
于 2008-09-17T14:08:20.223 に答える
2

壊れていないものを台無しにしないために、新しくて潜在的に優れたものに移りたいと思う限り、覚えておく必要があります。したがって、別のファイルにHibernateマッピングが機能している場合は、変更しません。

于 2008-09-17T11:50:05.283 に答える
1

私は間違いなく注釈を好み、両方を使用しています。それらははるかに保守しやすく、再マップするクラスをそれほど多く扱っていないため、それだけの価値があると言えます。注釈により、リファクタリングがはるかに簡単になります。

于 2008-09-18T03:36:57.953 に答える
0

すべての機能は、XMLと注釈の両方でサポートされています。xml宣言を使用してアノテーションをオーバーライドすることはできます。

努力に関しては、すべてを1か所で確認でき、コードとxmlファイルを切り替えることができないので価値があると思います(もちろん、2つのモニターを使用している場合を除きます;))

于 2008-09-17T11:48:48.437 に答える
0

アノテーションを使用することで得られる唯一のこと

これはアノテーションを使用することで得たいものだと思います。NHibernateではコンパイル時の安全性が得られないため、これは次善の策です。

于 2008-09-17T11:49:22.850 に答える
0

「壊れていない場合は、修正しないでください!」

@Macka-ありがとう、私はそれを聞く必要がありました。そして、皆さんの回答に感謝します。

私は自分の仕事を非常に専門的かつ創造的に管理できるという非常に幸運な立場にあり、あらゆる理由(高価なものを除く)で、ほぼすべてのテクノロジー、ライブラリ、またはツールを持ち込むことができます。かっこいい子供たちがそれを使っています」 ...既存のプロジェクトのコアのかなりの部分に相当するものを移植することは実際には意味がありません。

いつか、グリーンフィールドプロジェクトでHibernateまたはJPAアノテーションを試してみます。残念ながら、完全に独立した新しいプロジェクトを取得することはめったにありません。

于 2008-09-18T14:18:39.987 に答える