2

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

  1. 创建一个包含所有字段作为列的表,并根据保存在数据库中的字段数据重新创建对象。
  2. 序列化实例 -> 获取字节数组 -> 将字节数组保存到数据库 -> 从字节数组重新创建实例。

我的问题:哪种方式更快,哪种方式需要更少的空间?

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

4

1 回答 1

2

保存序列化字节数组可能节省空间,因为您不会拥有与表列、标题等相关联的所有元数据......话虽如此,我不知道速度或通过将单个字段保存在数据库中的列中而不是使用对象字节的一列来存储空间。如果要序列化并保存,不妨将其保存到文件中,根本不使用数据库。更不用说,随着您的对象和模型发生变化,加载旧版本可能会出现问题。可维护性也将是一场噩梦。

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

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

于 2013-07-15T19:43:52.593 回答