当前位置:  开发笔记 > 编程语言 > 正文

自制与Java序列化

如何解决《自制与Java序列化》经验,为你挑选了2个好方法。

我有一个需要持久保存在数据库上的POJO,当前设计将其字段指定为单个字符串列,并且不向表中添加其他字段.

意思是,对象需要以某种方式序列化.所以只是为了基本的实现,我去设计了我自己的对象的序列化形式,这意味着将它的所有字段连接成一个很好的字符串,用我选择的分隔符分隔.但这是相当丑陋的,并且可能会导致问题,比如说其中一个字段包含我的分隔符.

所以我尝试了基本的Java序列化,但是从我进行的一个基本测试来看,这在某种程度上变成了一个非常昂贵的操作(构建一个ByteArrayOutputStream,一个ObjectOutputStream,依此类推,反序列化).

那么我的选择是什么?序列化对象进入数据库的首选方法是什么?

编辑:这将是我项目中非常常见的操作,因此必须将开销保持在最低限度,并且性能至关重要.此外,第三方解决方案很好,但不相关(并且通常产生我试图避免的开销)



1> Craig Walker..:

Elliot Rusty Harold写了一篇很好的论据反对在他的XOM库中使用Java Object序列化.同样的原则适用于您.内置的Java序列化是特定于Java的,易碎且缓慢的,因此最好避免使用.

您在使用基于字符串的格式时有大致正确的想法.正如您所说,问题在于您遇到了分隔符的格式化/语法问题.解决方案是使用已经构建的格式来处理这个问题.如果这是标准化格式,那么您还可以使用其他库/语言来操作它.此外,基于字符串的格式意味着您只需通过观察数据就可以理解它; 二进制格式删除该选项.

XML和JSON是两个很好的选择; 它们是标准化的,基于文本的,灵活的,可读的,并且有很多库支持.它们的表现也非常出色(有时甚至比Java序列化更快).


我发现XML和JSON比Java序列化慢大约5倍.你有任何更快的例子吗?

2> jb...:

您可以尝试使用Protocol Buffers,这是一个来自Google的开源项目,它被认为是快速的(生成比XML更短的序列化形式,并且工作更快).它还可以轻柔地处理新字段的添加(插入默认值).

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有