有没有其他人认为实例变量在数据库支持的应用程序中存在问题?

时间:2010-05-31 13:00:19

标签: database imperative-programming state-management

在我看来,C#等语言的状态控制得不到很好的支持。

通过这个,我的意思是,由程序员来管理内存中对象的状态。常见的用例是域模型中的实例变量是驻留在永久存储器(即数据库)中的信息的副本。显然,这违反了单一权威原则,“同步”必须由开发人员管理。

我设想了一个系统,其中代替实例变量,我们有简单的公共访问/ mutator方法,标记有将它们链接到数据库的属性,并且读取和写入由决定是否命中数据库的框架调解。这样的系统存在吗?

我是否完全忽略了这一点,或者这个想法是否有一些道理?

2 个答案:

答案 0 :(得分:1)

如果我理解你想要什么:任何带有延迟加载的OR-Mapper都是这样工作的。例如,我使用Genome并且每个实体都是一个纯代理,你有很大的影响力告诉OR-Mapper如何缓存字段。

答案 1 :(得分:0)

实际上存在数据普遍性的概念(由Java中的prevayler实现),其中内存中对象是数据的单一权限(SPA)。

此外,一些对象数据库(如db4o)在对象表示和“存储”表示之间略微模糊。

另一方面,通过在应用程序中引入数据的SPA,您需要自己处理事务和/或数据持久性。在事务性内存系统上已经完成了一些工作,例如JVSTM(目前我的旧学院的信息系统正在使用它),但它没有得到广泛使用。

另一方面,如果数据存在于数据库中,您可以在一切正常时提交数据(或使用对数据库中构建的事务的支持),并确保数据没有损坏或丢失。您使用SPA原则进行交易,以获得更好的数据可靠性和交易(以及使用单独数据存储的其他优势)