我想开发一个需要从外部数据源(Database/Files/.)提取数据的应用程序。我找不到一个很好的模式。
假设数据库中有以下结构:
VariableTypeTable:id +一些stuffVariableTable:id +一些东西+对VariableTypeTable的引用
我可能想要3门课:
将
VariableType封装为VariableVariableManager来管理对象生存期+和一些业务操作(搜索等)的
是否有一种加载数据的通用模式?我应该在哪里和如何处理IO操作?
一些想法:
Variable和VariableType不应该知道(或者至少不知道)关于IO的任何事情。VariableManagerIO保留到VariableManager中,以处理IO,并且只操作Manager。如何报告IO错误?编辑:
我给出的例子过于简化,但我的主要问题超出了自反/持久化。
我也在把这个问题再扩展一点。如果某些业务函数需要查询数据,因为它更简单(例如,使用复杂的SQL请求),该怎么办?
发布于 2022-03-02 20:45:28
听起来像是在寻找某种类型的数据库持久对象。如果你为c++ database persistence做谷歌,你会得到一些点击。我对那些图书馆都不熟悉。
这是一个比看上去更复杂的问题。多年来,存在着无数的持久对象系统。我已经用了大约一打(大概是几百)。他们都以这样或那样的方式被吸走了,但你通常可以用他们中的任何一个完成工作。
我自己玩。我可以在睡梦中编写PSQL对象处理,我通常编写建模工具和代码生成器。我很简单。
对象本身并不知道它们被持久化。他们不知道他们可能被储存在数据库里。我使用一组并行的类来读和写它们。但是,他们可能知道如何使用我使用的任何JSON库,因此从平面JSON文件中保存/加载变得非常简单。非常非常容易编码。
我在我的宠物项目中使用的一个版本是:
https://github.com/jplflyer/Persist
这取决于:
https://github.com/jplflyer/ShowLib
对于我如何做事情和假设PostgreSQL,这是非常具体的。
对于管理更新,我的工具不会为您这样做。你必须知道你已经做了改变,并坚持自己。这就是所有各种持久对象库都会变得混乱的地方。有些人比其他人做得更好。
我更喜欢“POJO”--这实际上是一个Java术语。普通的旧Java对象。在这种情况下,普通的旧C++对象。一旦你开始教你的对象它们生活在一个数据库中,它们就会变得非常混乱。因为我控制更新的发生方式,所以我也可以在更新的同时向我的持久化引擎添加一个调用。
但如果你需要自动链接,也许我在第1段中建议的谷歌页面中的一个链接会对你有帮助。
https://stackoverflow.com/questions/71327435
复制相似问题