为什么要在模型上实现可序列化?

Ayo*_*o K 6 java serialization spring deserialization spring-boot

我注意到在 Spring-boot 中很多人创建模型/实体并实现Serialiazable接口。

public class ModelBase implements Serializable 
Run Code Online (Sandbox Code Playgroud)

我理解序列化数据/类的含义,因为它使您能够保存类的状态(如果我没记错的话,例如保存到文件中)。

但我相信只有在必要时才应该这样做,但无论哪种方式,人们似乎只是倾向于实现该接口。

难道还有什么不同的原因吗?

Kni*_*der 3

当您的模型或实体要跨多个 JVM 传输时,您可能需要考虑实现 Serialized 接口。您应该谨慎执行此操作。您还应该为序列化期间使用的类提供有效的 UUID,反之亦然。

样本是

private static final long serialVersionUID = 9178661439383356177L;
Run Code Online (Sandbox Code Playgroud)

根据 JPA 规范:

如果实体实例要作为分离对象按值传递(例如,通过远程接口),则实体类必须实现 Serialized 接口。

当使用可序列化值时,可以通过以下两种方式更改实体类来删除这种冗余:

使实体类可序列化,以便可以使用它来代替值类。

使关键字段成为临时字段,这样它们就不会冗余地存储在记录中。

https://docs.oracle.com/cd/E17277_02/html/collections/tutorial/SerializedEntity.html