2010-01-19 31 views
1

我使用spring.net创建了我的存储库。但是,我想知道这些对象的寿命是多少。在我的存储库中,从数据库中检索的对象被缓存在注册表中。但是这应该只发生在一次服务器调用中。你可以在spring.net配置中指定应该为每个服务器调用创建对象。使用spring.net创建存储库

我想singleton = false不会为我做,因为这会每次创建一个新的Repository,即使在同一个线程中。

回答

1

从你以前的帖子我看到你把所有的存储库放在一个注册表类中来检索它们。

我会离开这种方法,并直接注入存储库到需要他们的类。然后它变得更清楚你的物体的寿命是什么。

你应该看看other scopes Spring.NET所提供的为好。

+0

事实上,我重构了这一点,尽管我从蒂姆麦卡希的书中得到了它。我会再看看它,看看我从书中错过了什么。他确实使缓存无效。 – 2010-01-19 14:12:33

1

这是一个复杂的问题,因为缓存和注册表的设计发挥了作用。听起来像持久对象的生命周期将由注册表来控制,因为它将保持引用。

所以有一些事情要问:

  1. 哪个对象拥有的缓存?存储库,服务或其他东西?
  2. 你是如何使缓存无效的?当持久对象更新时它跟踪吗?
  3. 什么是创建对象的会话的超时值?如何将无效的会话传递到缓存?
  4. 当你说“注册表”,你的意思是“Windows注册表”? (上帝保佑,请这么“不”)

在Java EE的Spring中,通常可以通过Hibernate和EhCache获得可配置的缓存。如果您使用Spring JDBC模板,则必须自己编写它。您使用的存储库有哪些实现?

+0

1.库 好吧,这就是问题所在,目前它不会失效...... 3.不真正有所作为。 4. :-)不,这将是一个SOP(意大利面条面向模式) 嗯,有些看完后,我知道下一步该怎么做。 Thx为明确的答案。 – 2010-01-19 11:43:24