55

Hibernate 3.0 を使用して SQL Server データベースに接続する Websphere Portal プロジェクトを継承しました。

このプロジェクトには約 130 の Hibernate テーブル クラスがあります。それらはすべてSerializableを実装しています。いずれも serialVersionUID フィールドを宣言していないため、Eclipse IDE はこれらすべてのクラスに対して警告を表示します。

これらのクラスが Serializable を実装する必要はありますか?
もしそうなら、生成されたserialVersionUIDフィールドを一度に多数のクラスに追加するツールはありますか(警告を消すためだけに)?

4

5 に答える 5

76

これらのクラスが Serializable を実装する必要はありますか?

JPA仕様(JSR 220)はそれをかなりうまくまとめています(同じことがHibernateにも当てはまります):

2.1 エンティティクラスに関する要件

(...)

エンティティ インスタンスが分離されたオブジェクトとして (たとえば、リモート インターフェイスを介して) 値によって渡される場合、エンティティ クラスはSerializableインターフェイスを実装する必要があります。

したがって、厳密に言えば、切り離されたエンティティをネットワーク経由で別の層に送信したり、別のクラスター ノードに移行したり、HTTP セッションに保存したりする必要がない限り、これは要件ではありません。

もしそうなら、生成されたserialVersionUIDフィールドを一度に多数のクラスに追加するツールはありますか

Serial版(Ant)の Tasks でバッチ処理できると思います。

于 2010-04-28T02:03:37.417 に答える
8

Hibernate はシリアライズ可能をまったく必要としません。

于 2010-04-28T01:54:36.877 に答える
5

Eclipse の「Clean Up」コマンドでそれを行うことができます。ただし、さらに多くの機能も備えているため、パッケージ全体で使用する前に、テストしてクリーンアップとフォーマットの設定を調整してください。

于 2010-04-28T01:54:29.080 に答える
2

もしそうなら、生成されたserialVersionUIDフィールドを一度に多数のクラスに追加するツールはありますか(警告を消すためだけに)?

この警告は、プロジェクトまたはワークスペース全体のいずれかで、Eclipseのコンパイラ設定内で無効にできます。

于 2010-04-28T03:52:34.393 に答える
2

スクリプトを書くことはできますが、一連のクラスに対して自動的にそれを行うツールに精通していません。

Eclipse で機械的に実行する場合、クラスごとに 4 ~ 5 秒以上かかることはありませんが、それでもスクリプトよりも高速である可能性があります。

于 2010-04-28T01:38:51.657 に答える