【问题标题】:If a data model changes (an object) whats the best approach to also update the database?如果数据模型更改(对象),那么更新数据库的最佳方法是什么?
【发布时间】:2011-01-24 12:22:22
【问题描述】:

假设有一个 Teacher 对象,Teachers 拥有 Courses 对象的列表。 教师的课程可以更改。有的被添加,有的被删除。 在数据库中更新此更改的最佳方法是什么。 1. 每次更改后,立即更新数据库。例如:一门课程被添加,立即将其添加到数据库中。 2. 对实体/对象 Teacher 进行所有更改后(添加课程,删除课程),然后才使用所有更改更新数据库。 3. 其他??

我可以看到 1 和 2 的优点和缺点。 For 1:我不知道数据模型可以直接访问数据库时有多好。 对于 2:算法更复杂,因为您必须一次将数据模型中的信息与数据库中的信息进行比较。

谢谢

【问题讨论】:

    标签: database model datamodel


    【解决方案1】:

    查看一些适用于您的语言或平台的 ORM 工具。数据库中实体的对象表示总是可能不同步。例如,如果用户更改了某个属性,并且尝试了数据库更新,但无论出于何种原因更新失败。现在这两个项目没有同步。

    这也可能取决于您的数据库的更新频率。如果您不希望在数据库写入方面有大量活动,则可以选择在任何属性更改时触发即时数据库更新。

    否则,您可以在对象中包含dirty 标志,以指示它何时与数据库不同步。对象更改可以在发生时更新,或者在触发事件时(例如当用户决定保存他们的进度时)或定期更新,例如每 x 分钟。

    不同的语言和框架以不同的方式实现这些模型对象。在 Rails 中,模型对象是 ActiveRecord 的子类,并且知道如何将自己持久化到数据库中。在 Java 中,您很少将域对象与它们的持久化方式混合在一起。这通常由 ORM 框架或自定义 DAO 对象来处理。

    【讨论】:

      【解决方案2】:

      我发现了 Hibernate。这正是我所需要的,而且很简单。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-09
        • 1970-01-01
        • 1970-01-01
        • 2016-09-01
        • 2011-06-22
        • 1970-01-01
        • 1970-01-01
        • 2021-01-28
        相关资源
        最近更新 更多