对于应用程序开发人员,我认为使用可以持久保存到底层数据存储(为了参数的 SQL 数据库)的域对象编写应用程序的传统范例是编写域对象,然后编写(或生成)表结构。域对象的外观与底层数据存储结构的外观之间存在紧密耦合。因此,如果您想向域对象添加一条信息,请将该字段添加到您的代码中,然后将一列添加到相应的数据库表中。都熟悉吗?
这对于具有良好定义结构的数据存储(我主要谈论 SQL 数据库,其中表和列是预定义和固定的)来说非常好,但是现在存在许多替代无处不在的 SQL 数据库并且这些通常不会以这种方式限制数据。例如,MongoDB 是一个NoSQL数据库,您可以将数据划分为集合,但除此之外没有数据结构。当您要添加新字段时,您无需定义新列。
现在问题来了:考虑到像 MongoDB 这样的数据存储的灵活性,如何在表示这些数据的域对象中实现类似的灵活性?因此,例如,如果我使用 Spring 并创建自己的域对象,当我向我的数据添加“middleName”字段时,如何避免必须向我的域对象添加“middleName”字段?我正在寻找某种机制/方法/框架来动态检查数据并在我的域对象中访问它,而不必每次都更改代码。欢迎所有想法。