面向对象设计和数据库设计过程

Object oriented design and Database Design Process

我对开发基于数据库的应用程序的过程有点困惑。 我正在使用 java 语言和关系数据库。 循环开发基于面向对象数据库的应用程序(如 "inventory management control")的过程的正确方法是什么? 开发数据库模式然后进行 OOD,反之亦然。

由于我假设您将要使用传统的 RDBMS,根据我自己的经验,最好先设计数据库模式:考虑存储信息所需的所有表,考虑关系在它们之间(外键)。

下一步应该是编写应用程序本身。我假设您即将使用 Java,并且可以从 OOP 设计中获益。

在这种情况下,我强烈建议使用 Hibernate 等 ORM 技术来满足 OOP 应用程序设计和 RDBMS 设计之间的差距。尽管这不是强制性的,但您可以使用简单的 JDBC 方法。

根据我的经验,以这种方式开发比首先设计高级 OOP 应用程序,然后尝试使其适应数据库模式要少得多,因为通常与数据库混淆比 time-expensive具有高级 OOP 抽象。

有许多不同的方法,它们各有优缺点。

如果您遵循 ORM 方法并使用像 Hibernate 这样的工具,您可以隐藏大部分数据库实现。您将继续您的 OOD,而数据库模式将从中退出。像 Hibernate 这样的 ORM 甚至可以为您生成模式(这对测试非常有帮助,因为您可以为测试动态创建一个 in-memory 数据库)。

这种方法的优点是您可以专注于 OOD 并使用 'thin slices' 随着您的进展生成数据库架构。这非常适合敏捷方法。

ORM 方法的缺点是它可能无法生成优化的数据库架构。例如,您的数据库模式的性能可能不如您更加关注模式设计。

如果您决定专注于数据库设计,您可以花时间优化它以满足性能和其他 non-functional 要求(如可伸缩性和审计)。这种方法的缺点是它可能会限制您在代码中执行 OOD 的方式,并且可能更难以以敏捷首选的迭代方式工作。