Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 缓存对象并避免数据库行具有重复的对象_C++_Qt_Caching_Qt5 - Fatal编程技术网

C++ 缓存对象并避免数据库行具有重复的对象

C++ 缓存对象并避免数据库行具有重复的对象,c++,qt,caching,qt5,C++,Qt,Caching,Qt5,我有一个应用程序,其中数千行从数据库加载(最多250000行),并映射到同一类型(T1)的对象中 但是,这些行具有另一个表中的行的外键,这些行也会根据需要加载并映射到T2类型的对象中 我没有缓存,对象(到目前为止)可以同时存在于我的系统中,即使它们代表数据库中的同一行 我认为这可能不是最好的解决办法。如何缓存对象并保持关系 对于我的应用程序来说,始终检查数据库是不可避免的(因为用户可以在执行过程中应用复杂的过滤器等),但我认为最好是在查询数据库之后,知道一行何时已经在内存中由一个对象表示,并使用

我有一个应用程序,其中数千行从数据库加载(最多250000行),并映射到同一类型(T1)的对象中

但是,这些行具有另一个表中的行的外键,这些行也会根据需要加载并映射到T2类型的对象中

我没有缓存,对象(到目前为止)可以同时存在于我的系统中,即使它们代表数据库中的同一行

我认为这可能不是最好的解决办法。如何缓存对象并保持关系

对于我的应用程序来说,始终检查数据库是不可避免的(因为用户可以在执行过程中应用复杂的过滤器等),但我认为最好是在查询数据库之后,知道一行何时已经在内存中由一个对象表示,并使用同一个对象,而不是再次创建它


我对解决方案、想法和有用资源的链接感兴趣。

可能是这样的:或者其他ORM实际上是用比ORM框架更简单的方法思考的?我在检查类QCache,但它似乎拥有元素的所有权,我正在使用QSharedPointers,我认为它不适用于该类。您可以基于multiton模式实现自己的类。这将允许您以自己喜欢的方式管理缓存。@WilliamJones听起来很有趣,不知道这种模式的“多”版本。关于在缓存达到一定大小时应用LRU策略来实现线程安全的任何线索,等等。使用QT?似乎您正在寻找更像ORM的东西。我可以想象,当您实现了带有缓存大小管理的线程安全LRU时,您已经实现了50%的好ORM。ORM的其余部分(可能是您不需要的部分)是获取和放置持久性模型。还有其他不使用ORM的动机吗?也许类似于:或者其他ORM实际上是用比ORM框架更简单的东西来思考的?我在检查类QCache,但它似乎拥有元素的所有权,我正在使用QSharedPointers,我认为它不适用于该类。您可以基于multiton模式实现自己的类。这将允许您以自己喜欢的方式管理缓存。@WilliamJones听起来很有趣,不知道这种模式的“多”版本。关于在缓存达到一定大小时应用LRU策略来实现线程安全的任何线索,等等。使用QT?似乎您正在寻找更像ORM的东西。我可以想象,当您实现了带有缓存大小管理的线程安全LRU时,您已经实现了50%的好ORM。ORM的其余部分(可能是您不需要的部分)是获取和放置持久性模型。还有其他不使用的动机吗?