序列化和数据库存储之间的区别

时间:2012-08-27 17:36:53

标签: java serialization

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

4 个答案:

答案 0 :(得分:7)

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

enter image description here

如果你想让东西无处可去,你就把它放在碗里。

您的东西是您要存储的数据。现在它在桌子上,在一个盒子里。 enter image description here

所以我们要从那个盒子里取出东西。问题是,我们盒子里的东西可能不适合放入碗中。我们如何解决这个问题?

我们需要将它改成适合我们碗的物体类型。我们需要序列化

enter image description here

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

enter image description here

如果这一切都非常复杂。简化:序列化更改数据库存储的地方。通常,在存储之前更改

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

没有。一点也不。 Java中的序列化是一种API,它生成一个对象的可存储版本,以后可以从磁盘(或存储它的任何地方)加载回来,并将其重新放回到一个对象中(希望!)曾经的状态。有一些替代方案,例如Google Protobufs,它们对于网络应用程序更好,但它对于大多数简单用途来说已经足够了。

答案 3 :(得分:0)

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

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