设计讨论:存储序列化类还是创建特定表?

时间:2014-01-17 11:11:34

标签: database oop database-design serialization

我想将来自特定类(“MyClass”)的信息存储在数据库中。所以,我有两个选项

  1. 序列化对象(类MyClass)并将其存储为现有表中的二进制字段。
  2. 创建一个新表,其中包含与MyClass包含的字段数相同的字段。
  3. 哪种方法最好? 我担心将来更改MyClass定义。因此,如果MyClass发生更改,我将无法从现有表中反序列化二进制对象。另一方面,创建新表似乎更复杂,并且在MyClass更改时也需要修改表定义。

1 个答案:

答案 0 :(得分:2)

将您的类保留在每个属性具有列的表中。这为您提供了更多的控制,并且可以节省您编写大量代码,因为数据库引擎专门用于读取和写入数据。

想一想:如果使用序列化,您将如何检索与特定搜索值匹配的一组行的数据?唯一的方法是读取每一行,反序列化它,测试搜索条件,然后继续读到下一条记录,直到你读完所有这些。

使用数据库,您只需指定一个WHERE子句,就可以获得您正在寻找的行。在后台,很多相同类型的工作(可能)正在进行,但所有工作都由代码完成,您不必编写或维护。