永続化について話すだけの場合はSerializable必要ありませんが、エンティティを作成することをお勧めしSerializableます。
私たちは、露光されている場合はdomain/ entities直接プレゼンテーション層に公開されたオブジェクト、代わりに使用してのDTO、その場合は実装する必要がありますSerializable。これらのドメインオブジェクトはHTTPSession、キャッシュ/最適化の目的でに保存できます。httpセッションは、シリアル化またはクラスタ化できます。また、JVMインスタンス間のデータ転送にも必要です。
DTO永続化レイヤーとサービスレイヤーを分離するために使用する場合、ドメインオブジェクトを非Serializable生産的で「encapsulation」に違反するものとしてマークします。その後、それはアンチパターンになります。
複合識別子
主キークラスはシリアル化可能である必要があります。
POJOモデル
エンティティインスタンスを分離されたオブジェクトとしてリモートで使用する場合、エンティティクラスはSerializableインターフェイスを実装する必要があります。
キャッシュ
さらに、clustered2番目のレベルを実装する場合cache、エンティティはでなければなりませんserializable。2番目のレベルのキャッシュエントリのキーとして使用される可能性があるSerializableため、これidentifierはJPA要件であるため、識別子を指定する必要があります。
エンティティをシリアル化するときはserialVersionUID、プライベートアクセス修飾子を明示的に指定してください。serializableクラスが明示的にを宣言しない場合、Java(TM)Object Serialization Specificationで説明されているようにserialVersionUID、シリアル化ランタイムはserialVersionUIDクラスのさまざまな側面に基づいてそのクラスのデフォルト値を計算します。デフォルトのserialVersionUID計算は、コンパイラーの実装によって異なる可能性があるクラスの詳細に非常に敏感であるため、InvalidClassExceptions逆シリアル化中に予期しない結果になる可能性があります。