序列化用于Java的持久性。可以使用序列化持久化一些对象。但是,对于大量对象,ORM,数据库等可能会更好。似乎序列化仅对小型作业有用。可能是我错了。因此,请告诉我序列化比非序列化方法有什么优势?什么时候应该使用,什么时候应该避免使用?
看到DZone文章“对象序列化是否有害”之后,这个问题浮现在我脑海。
以下是引起我疑问的内容:
如果您查看Java及其会话对象,则使用纯对象序列化。假设应用程序会话的寿命很短(最多几个小时),则对象序列化非常简单,得到了很好的支持,并内置在会话的Java概念中。但是,当数据持久性处于较长的时间段(可能是数天或数周)时,并且您不得不担心应用程序的新发行版时,序列化很快就会变成邪恶。正如任何优秀的Java开发人员所知道的那样,如果您打算序列化对象(即使在会话中),则需要一个真实的序列化ID(serialVersionUID),而不仅仅是1L,并且您需要实现Serializable接口。但是,大多数开发人员都不知道Java反序列化过程背后的实际规则。如果您的对象已更改,则不仅仅向对象添加简单字段,即使序列号未更改,Java也可能无法正确反序列化对象。突然,您无法再检索数据,这本质上是糟糕的。
现在,可能开发人员阅读此文章可能会说他们将永远不会编写有此问题的代码。可能是这样,但是您使用的库或公司不再雇用的其他开发人员呢?您能保证这个问题永远不会发生吗?保证的唯一方法是使用其他序列化方法。
1L
”的部分是不正确的。