取消引用指向数据存储中同一对象的两个 ReferenceProperty

发布于 2024-10-26 23:19:09 字数 445 浏览 5 评论 0原文

我正在阅读关于急切加载的这个StackOverflow问题,这导致我这篇关于 GAE 上高效取消引用的博文

如果我取消引用指向数据存储中同一对象的两个 ReferenceProperties,框架不会维护任何类型的身份映射并执行两个单独的 get 请求,这是否正确?返回的对象也是不同的实例,一个实例的更改显然不会反映在另一个实例上。

这不是很不理想吗?我有 SQLAlchemy 背景,我发现会话模式非常直观。

I was reading this StackOverflow question about eager loading which led me to this blog post about efficient dereferencing on GAE.

Is it correct, that if I dereference two ReferenceProperties that point to the same object in the datastore, the framework doesn't maintain any kind of identity map and performs two separate get requests? The objects returned are also different instances and changes on one are obviously not reflected on the other.

Isn't this less than ideal? I'm coming from a SQLAlchemy background, where I find the session pattern really intuitive.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深海夜未眠 2024-11-02 23:19:09

这是正确的。 Guido 的新 NDB 项目确实会执行此映射,但当前的数据库框架不会执行此映射t。其原因正如您所期望的:如果代码的两个不同部分获取并修改同一实体,则可能会产生不需要的副作用。直观的期望是,如果您获取了该对象,那么它就是您的,并且除非您愿意,否则没有其他任何东西会改变您下面的东西。

如果您尝试同时取消引用一批实体,可以先将键列表转换为集合,以消除重复的获取。

That's correct. Guido's new NDB project does perform this mapping, but the current db framework doesn't. The reason for this is what you'd expect: if two different parts of the code fetch and modify the same entity, it could create unwanted side-effects. The intuitive expectation is that if you fetched the object, it's yours and nothing else is going to change it underneath you unless you want it to.

If you're trying to dereference a batch of entities at the same time, you can convert the list of keys into a set first to eliminate duplicate fetches.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文