4

java中的序列化和数据库存储有什么区别?序列化实际上不意味着将数据存储在服务器上的数据库中吗?

4

4 回答 4

15

让我们把数据库想象成一个碗。

在此处输入图像描述

如果你想防止东西到处乱跑,你把它放在碗里。

你的东西就是你想要存储的数据。现在它就在那里,在桌子上,在一个盒子里。 在此处输入图像描述

所以我们要把这些东西从那个盒子里拿出来。问题是,我们盒子里的东西可能装不进碗里。我们如何解决这个问题?

我们需要将其更改为适合我们碗的对象类型。我们需要序列化它。

在此处输入图像描述

我们的序列化数据现在可以放入碗中。所以我们把我们的序列化数据倒进碗里,我们吃了一天中最重要的一餐。

在此处输入图像描述

万一这一切真的很复杂。简化:序列化就是改变数据库存储东西的地方。通常,您会在存储之前更改内容。

于 2012-08-27T17:55:19.360 回答
3

序列化可用于为数据库存储准备对象 - 它是将对象转换为可存储或可传输格式的过程,例如字符串或字节流。

我们无法将 java 对象按原样存储到大多数普通存储类型中 - 但如果我们将其序列化为 JSON,我们可以将其存储。然后,我们可以稍后从存储中检索 JSON 并对其进行反序列化,以获取与原始对象相同的对象,前提是序列化和反序列化已正确实现。

当然,这不一定需要数据库存储——例如,将对象序列化为 JSON 流还允许我们通过 Internet 传输它以在另一台计算机上反序列化。

于 2012-08-27T17:42:42.263 回答
0

序列化是将数据结构转换为可以以任何方式持久化(保存在硬盘上)的形式的过程。它可以是二进制、xml、纯文本、html……通常的目标是能够反序列化,即恢复数据结构在持久化时的状态。

数据库只是您存储数据的地方(而不是方式)。

于 2012-08-27T17:45:42.153 回答
0

一点都不。Java 中的序列化是一种 API,它生成对象的可存储版本,您可以稍后从磁盘(或存储它的任何地方)加载回该对象,并使其恢复为具有(希望!)与以前相同的状态的对象。它还有其他替代品,例如Google Protobufs,它们更适合网络应用程序,但对于大多数简单用途来说已经足够了。

于 2012-08-27T17:39:53.273 回答