实体类为什么要实现Serializable接口,实现序列化有什么作用

之前在参照开源项目做SpringBoot项目时有一个问题一直困扰着我——为什么在定义的model中,有些需要实现 Serializable 接口,而有些不需要。

  • 需不需要是以什么标准来判断的呢?
  • 为什么需要实现实体类的序列化呢?

原来是web服务器会将我们暂时用不到但没有超时的 HttpSession 对象转移到文件系统或者数据库中保存,而当又需要用到它们时,可以再将它们从文件系统或者数据库中拿出装载到内存。这种技术被称为 Session 的持久化。

将HttpSession对象保存到文件系统或数据库中,需要采用序列化的方式将HttpSession对象中的每个属性对象保存到文件系统或数据库中;将HttpSession对象从文件系统或数据库中装载如内存时,需要采用反序列化的方式,恢复HttpSession对象中的每个属性对象。所以存储在HttpSession对象中的每个属性对象必须实现Serializable接口。

程序在运行时实例化出对象,这些对象存在于内存中,随着程序运行停止而消失,但如果我们想把某些对象(一般都是各不相同的属性)保存下来或者传输给其他进程,在程序终止运行后这些对象仍然存在,可以在程序再次运行时读取这些对象的信息,或者在其他程序中利用这些保存下来的对象信息恢复成实例对象。这种情况下就要用到对象的序列化和反序列化。

  • 问题一:为什么要实现序列化?
    答:序列化就是对实例对象的状态(State 对象属性而不包括对象方法)进行通用编码(如格式化的字节码)并保存,以保证对象的完整性和可传递性。

    简而言之:序列化,就是为了在不同时间或不同平台的JVM之间共享实例对象

  • 问题二为何一定要实现 Serializable 才能进行序列化

建议直接看:

https://blog.csdn.net/qq_18298439/article/details/80607057

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值