如果数据模型发生变化(一个对象),最好的方法是更新数据库吗?

时间:2010-03-06 18:21:13

标签: database model datamodel

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

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

谢谢

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

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