0

我有一组模型类定义,每个都有一些属性和方法。

每个新的模型类定义都映射到它自己的数据库表,这些属性形成了表列。然后可以将每个新创建的对象充分保存以备不时之需。

我的问题是,我怎样才能优雅地允许在运行时添加其他属性,并在不重新迁移数据库中的所有表的情况下保存它。

例如,假设我有一个“文章”对象,其名称、创建日期和文章正文作为属性(最初),但在运行时,用户决定为特定文章添加概要作为属性,如何做我将新实体保存到数据库中?

我想我正在尝试(除其他外)模仿在 Drupal 中添加字段或在 Wordpress 中添加自定义字段。

由于在创建或更新表时必须指定每一列的数据类型,我能想到的唯一方法是创建一个以数组作为数据类型的列。这个解决方案虽然感觉有点尴尬,只是想知道其他人是如何做到的。

您的帮助将不胜感激。

4

1 回答 1

0

作为最低公分母,您可以将对象保存为一系列键值对,但这听起来既笨重又缓慢。当您拥有包含对象等的对象时,我还可以设想噩梦。

或者,您可以在存储之前对它们进行序列化(也许是 xml 文档?)但这放弃了数据库级别的任何类型的结构,并且如果您希望在特定列值上查询数据库,这会使事情变得复杂。

但如果我是你,我会阅读一些“休眠”实用程序,例如 Hibernate (!),以了解它们如何持久化。这些实用程序已经在解决您的确切问题,您可以保证他们会对此进行大量思考。

如果幸运的话,甚至可能有这样一个实用程序,您可以开箱即用,而无需了解细节。

于 2013-05-11T20:20:00.433 回答