问题标签 [identity-map]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1271 浏览

c# - 实现身份映射的最佳结构是什么?

尽管 DataTable 是一个内存占用者,但如果由于检索时间为 O(1) 而对象集非常大,那么 DataTable 不是实现和 IdentityMap 的最佳选择吗?

更新

如果我决定使用 IDictionary,我会在检索对象时牺牲速度吗?

0 投票
1 回答
1349 浏览

php - 如何在学说 ORM 中有身份映射

需要使用具有 Datamapper 元素的良好 PHP ORM,我不够聪明,无法自己编写代码。

选择了学说,但是在阅读了用户指南之后,找不到任何说明如何使用身份映射来降低对数据库的调用的内容。

请告诉我如何在学说 ORM 中有身份映射?

昨天通过 fowler 的 PEAA 书阅读并理解了诸如 datamapper、activerecord、identity map、域模型之类的东西。

0 投票
3 回答
267 浏览

design-patterns - DataContext 应该存在多长时间?

我只是想知道 DataContext 应该真正存在多久。Dino Esposito 的Microsoft .NET: Architecting Applications for the Enterprise等所有模式和实践书籍都告诉您,数据上下文不能长期存在,也不应该被缓存。但合适的时间是多久?一个完整的网络请求,一个工作单元,一个事务,一次只有一个查询?(我假设一个网络请求通常不止一个工作单元)

假设您将实体框架用作 Web 应用程序中的 ORM 工具。但是在这种情况下,身份映射模式又如何呢?假设您有一个 Customer DAL 的专用实例,它创建一个 Datacontext 和另一个 Invoice DAL,它自己也为此目的创建一个新的 DataContext。如果您已经获得了所有 DAL 的基类,那么它会创建 ObjectContext 的单个实例并在最后处理这个实例。这会被认为是一个糟糕的实施吗?在我看来,对于单个 Web 请求只有一个 ObjectContext 可能是有意义的。它可以利用实体​​框架支持的身份映射模式作为优势之一。

有任何想法、评论、想法或批评吗?

0 投票
2 回答
98 浏览

linq-to-sql - 如何访问或替换 LINQ to SQL 的 IdentityManager?

我需要确定具有特定主键的对象是否已附加到 DataContext 并从 DataContext 获取实体(如果已附加)。有没有什么方法不需要完全信任的反射?

理想情况下,我想调用 GetCachedObject(),但我必须使用反射来实现,而且我很确定我必须处于完全信任模式,这在托管环境中不起作用.

我愿意在这里跳出框框思考。另外,我可以完全控制生成的 LinqToSql 代码,所以这也不是问题。我可以重写我的 DataContext 类。有什么方法可以访问 IdentityManager,用我自己的抽象替换 IdentityManager,等等?欢迎任何和所有想法。

0 投票
6 回答
1952 浏览

nhibernate - NHibernate ICriteria 查询是否被缓存或放入身份映射?

使用 NHibernate,我通常使用 Get() 或 Load() 方法查询单个记录(取决于我是否需要代理):

现在,如果我执行此语句两次,如下例所示,我只看到在我的单元测试中执行了一个查询:

到目前为止,一切都很好。但是当使用 ICriteria 查询获取相同的对象时,我注意到一些奇怪的行为。在下面查看我的代码:我得到了第一个对象实例。然后我将一个属性的值更改为 10(数据库中的值为 8),获取另一个实例,最后检查第二个对象实例的值。

现在,由于某种原因,断言失败,因为值是 obj2 的 10,即使我使用新查询请求对象。有趣的是,根据我的单元测试输出窗口执行了 2 个完全相同的选择查询。我的问题:如果从一级缓存中获取第二个对象,为什么会执行 2 个查询?

我错过了什么还是这是一个错误?

问候,特德

编辑 #1:使用 NHibernate v2.1.2GA 编辑 #2:我在最后一段中添加了一些关于正在执行的 2 个查询的额外解释。

0 投票
2 回答
590 浏览

c# - 我在哪里可以找到支持不同类型的多个字段的“身份字段”(fowler)模式的 C# 实现

我找到了一个允许长类型的多个字段。但是,我不确定这有多大用处,因为有时我们可能有指南甚至日期。

我也可以修改他以支持我的需求,但这似乎是一个常见的要求,我应该能够找到经过测试、尝试和真实的东西,而不是从头开始创建它。

我背后的主要目的是使用身份映射模式。我相信这种模式或多或少需要身份字段模式来支持它。我将使用 Identity Field 构造作为我的字典的键

有任何想法吗?

谢谢

0 投票
3 回答
375 浏览

java - 这里有并发问题吗?在开发过程中如何测试它?

场景:存在“n”个团队,每个团队都在他们的虚拟“墙”(如 facebook 的墙)上工作。每个团队只能看到他们自己的墙和上面的帖子。帖子可以由帖子的作者或其他团队成员编辑(如果这样配置。假设确实如此,因为它是必须的)。

设计/技术决策:使用 Restlet+ Glassfish/Java + Mysql 的 RESTful Web 应用程序(编辑:使用 Apache DBUtils 进行数据库访问。没有 ORM - 似乎有点矫枉过正)

问题:多个团队登录 T1、T2 和 T3(比如说),每个团队都有一定数量的成员。团队级别的数据访问存在并发性,但跨团队不存在 - 即不同的团队访问不相交的数据集。为了优化对 DB 的频繁读/写,我们正在考虑使用 TeamGateway 来控制对 DB 的访问以处理并发。网络服务器将缓存团队检索到的数据以加快读取速度(并帮助更新墙帖列表)

  • Q1:这(每个团队的 TableGateway + 缓存)甚至是必需的吗?如果不是,您建议如何处理?
  • Q2:如果是这样,TableGateway(每个团队)是否需要编码为线程安全(同步方法)?假设我们有一个带有静态方法的类/注册表 TableGatewayFinder,该方法返回 TableGateway 以供该特定团队使用(使用哈希图)。

如果每个 T1 - T3 有 6 人登录,那么将只创建 3 个 TableGateway,它是否有助于捕获并发写入(提交前的简单时间戳比较或“冲突标记”附加)并有效管理缓存(我们计划有实体的身份映射 - 需要跟踪 4-5 个不同的实体。组合层次结构中有 4 个实体,另外一个与 4) 中的每一个相关联?

一个单元如何测试网关(基于 TDD 或事后)?

提前致谢!

0 投票
2 回答
2219 浏览

python - sqlalchemy 身份映射问题

身份映射和工作单元模式是 sqlalchemy 比 django.db 更具吸引力的部分原因。但是,我不确定身份映射如何工作,或者当应用程序配置为 wsgi 并且通过 api 调用而不是共享服务直接访问 orm 时它是否工作。我想apache会为每个请求创建一个带有自己的python实例的新线程。因此,每个实例都有自己的 sqlalchemy 类实例,并且无法使用身份映射。它是否正确?

0 投票
3 回答
1311 浏览

java - 哪个 Android/Java ORM 像 Hibernate 一样使用“对象缓存”?

我看到了一堆关于 Hibernate 的轻量级替代品的问题,尤其是对于 Android。但是它们中的哪一个具有“身份图”模式?

此模式确保表示数据库中一行的任何对象在任何会话中仅存在一次。– 它有助于我的程序保持一致:如果我在某处更改映射对象,它会随处更改(因为所有引用都指向同一个对象)。如果我通过新的数据库查询重新获取对象,或者仍然从之前的调用中保留它,这并不重要:ORM 确保它们的行为都像同一件事。

Hibernate 在它的“一级缓存”中执行此操作。

0 投票
3 回答
2459 浏览

ruby-on-rails - Rails 3.1 身份映射问题?

有谁知道 Rails 3.1 IdentityMap 功能的关键问题导致该功能默认被禁用?我确信有一些小的具体问题,但是在为已经构建的 Rails 3.1 应用程序启用它之前,是否有任何人应该注意的主要问题?