2010-01-19 32 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