是否一定要实现Serializable接口序列化

1. 为什么要实现序列化

序列化:将数据结构或对象转换成二进制字节流的过程

在Java开发中,对实体类进行序列化并生成序列化id是为了保证对象在网络或磁盘中的传输和存储的正确性和可靠性。

1. 存储对象在存储介质中,以便在下次使用的时候,可以很快捷的重建一个副本。

2. 便于数据传输,尤其是在远程调用的时候。


现在有个问题,当我们对 java 的实体类没有进行序列化的时候,我们在和 mysql 数据库进行数据传输的过程也没有出现过问题?那为什么在实体类上还需要实现 Serializable 接口进行序列化呢?为什么要多此一举呢??


2. 到底什么时候需要序列化

我们知道在数据存储的时候必须要对数据进行序列化,将对象进行流式存储,但是我们在项目中没有进行数据的序列化也存储到了数据库中,这是为什么呢?


我们知道 int、double、long、String 类型等,都是基本数据类型,数据库里面有与之对应的数据结构。我们以为的没有进行序列化,其实是在声明的各个不同变量的时候,由具体的数据类型帮助我们实现了序列化操作。那么数据类型已经帮我们进行了数据的序列化,为什么我们要需要实现Serializable接口呢?


首先,序列化的目的有两个,第一个是便于存储,第二个是便于传输。我们一般的实体类不需要程序员再次实现序列化的时候,那么存在两个问题:第一:存储媒体里面,是否是有其相对应的数据结构?第二:这个实体类,是否需要远程传输(或者两个不同系统甚至是分布式模块之间的调用)?


典型的例子,在 NoSql 数据库中不存在 varchar,int 之类的数据结构,但我们又确实需要进行存储,那么,此时程序员则需要对对象进行序列化操作。


我们在实体类声明实现 Serializable 接口时,再次进行观察,会发现这些类是需要被远程调用的。也就是说需要或者可能需要被远程调用,这就是序列化便于传输的用途。


具体引用参考文献:https://cloud.tencent.com/developer/article/1032460(里面还有一些使用 Serializable 实现序列化的优缺点以供参考)

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
Lik
下载 APP