Java 对象什么时候应该实现序列化 Serializable 接口

2020-08-09 13:01:22 +08:00
 Vimax

以下对象中,哪些应该要实现序列化。

平时代码中不添加序列化为什么也没有问题?

分层领域模型规约:

• DO ( Data Object ):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。

• DTO ( Data Transfer Object ):数据传输对象,Service 或 Manager 向外传输的对象。

• BO ( Business Object ):业务对象,可以由 Service 层输出的封装业务逻辑的对象。

• Query:数据查询对象,各层接收上层的查询请求。注意超过 2 个参数的查询封装,禁止使用 Map 类 来传输。

• VO ( View Object ):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。

4454 次点击
所在节点    Java
14 条回复
Kiske
2020-08-09 13:04:45 +08:00
需要反序列化的时候, They are like glasses: you’ll know when you need them.
wdlth
2020-08-09 13:10:28 +08:00
因为在平时大多数情况不使用 Java 自己的序列化,一般是使用 JSON, hessian, kyro 等适用性更广或者更快的方法。
optional
2020-08-09 13:49:29 +08:00
嗯,代码报错不得不序列化的时候。
reeco
2020-08-09 13:52:10 +08:00
这个对象需要网络传输的时候
wujichao
2020-08-09 14:03:06 +08:00
使用的序列化框架强制需要你实现的 Serializable 协议的时候.
aguesuka
2020-08-09 14:18:38 +08:00
1.需要兼容老接口.2.或者不得不 hack 的时候(SerializableLambda).3.需要易于编写但是难以维护的序列化功能时
chendy
2020-08-09 15:05:22 +08:00
目前的项目应该可以直接忘掉这个接口了
真的用不到
kawowa
2020-08-09 15:10:55 +08:00
最简单的例子,你想存进 redis 的时候。
cool4food
2020-08-09 17:58:53 +08:00
Java 自带的序列化接口只适用于 Java 进程之间的数据序列化 /反序列化,这就使得它的应用面比较窄,而且经过测试,Java 自带的 Serializable 性能也不好,所以目前基本上很少用
huntcool001
2020-08-09 19:04:21 +08:00
几乎什么时候都不需要.除非是兼容老的代码.

需要保存或者传输的时候用 Json 或者其他方式, Protobuf 一类的.

Java 自带的序列化机制很垃圾, Oracle 设计 Java 语言的 chief architect 自己都说

Mark Reinhold, shared his thoughts about Java’s serialization mechanism which he called a “horrible mistake” and a virtually endless source of security vulnerabilities

https://adtmag.com/articles/2018/05/30/java-serialization.aspx

而且以后会从 Java 语言里移除的.
mio4
2020-08-09 19:35:28 +08:00
很简单,dubbo rpc 调用的时候
mightofcode
2020-08-09 19:50:10 +08:00
永远不要用
webshe11
2020-08-09 21:08:58 +08:00
需要制造反序列化漏洞的时候
lxk11153
2020-08-10 08:48:10 +08:00
@mio4 #11 dubbo 和你指定哪种序列化框架有关,默认好像是要的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/696834

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX