Java写对象到MySQL - 每个字段或序列化字节数组?

时间:2013-07-15 19:27:51

标签: java mysql serialization bytearray field

我正在尝试将Serializable Java类的实例保存到MySQL数据库。 据我所知,我有两个选择:

  1. 创建一个包含所有字段作为列的表,并从保存在数据库中的字段数据中重新创建对象。
  2. 序列化实例 - >得到字节数组 - >将字节数组保存到数据库中 - >从字节数组重新创建实例。
  3. 我的问题:哪种方式更快,哪种方式需要更少的空间?

    我的第二个问题:我如何使用jdbc轻松编写并从mysql数据库中获取字节数组?

1 个答案:

答案 0 :(得分:2)

保存序列化字节数组可能可以节省空间,因为您不会将所有元数据与表列,标题等相关联......说完了,我不知道通过将数据库中的列中的各个字段与具有对象字节的一列保存在一起,速度或存储空间会有明显的差异。如果您要对其进行序列化并保存,您可以将其保存到文件中,而不是使用数据库。更不用说,随着您的对象和模型的更改,加载旧版本可能会出现问题。可维护性也是一场噩梦。

就个人而言,除非有特定的商业案例或理由,否则我永远不会在数据库中保存对象的序列化字节数组。我只是创建表,列,并使用JDBC或您喜欢的持久性框架(如Hibernate)以这种方式持久化。将其保存为序列化字节数组似乎只限制了您可以对数据执行的操作。如果您不想创建数据库,表,列等...那么请考虑将其序列化并写入文件。这可能会节省一些空间和时间,因为您不必维护数据库服务器。当然,您拥有的对象越多,文件越多,搜索和查询数据的难度就越大。

TL; DR: 我只是为您要保存的数据创建数据库表。我没有看到将它作为序列化字节数组保存在数据库中有任何明显的好处。