2010-01-19 1 views
1

spring.net으로 리포지토리를 만들고 있습니다. 그러나, 나는 평생이이 물건들에 대해 궁금해하고 있습니다. 내 리포지토리에서 데이터베이스에서 검색된 개체는 레지스트리에 캐시됩니다. 그러나 이것은 단일 서버 호출에 대해서만 발생해야합니다. Spring.net 구성에서 서버에 대한 각 호출에 대해 객체를 만들어야한다고 지정할 수 있습니까?spring.net을 사용하여 리포지토리 만들기

나는 새 스레드가 매번 동일한 스레드에서도 생성되므로 singleton = false가 나를 대신하지 않는다고 생각합니다.

답변

1

이전 게시물에서 모든 리포지토리를 레지스트리 클래스에 저장하여 검색하는 것을 확인했습니다.

나는 이러한 접근법을 피하고 저장소가 필요한 클래스에 직접 삽입 할 것입니다. 그러면 개체의 수명이 훨씬 더 명확 해집니다.

Spring.NET에서 제공하는 other scopes을 살펴 봐야합니다.

+0

사실, Tim McCarghy의 책에서 얻었지만 실제로 그것을 리팩토링했습니다. 내가 책에서 놓친 것을보기 위해 다시 한번 살펴 보도록하겠습니다. 그는 캐시를 무효화합니다. –

1

캐시와 레지스트리의 디자인이 작용하기 때문에 이것은 복잡한 질문입니다. 그것은 영구 객체의 수명이 참조를 유지할 것이므로 레지스트리에 의해 제어되는 것처럼 들립니다.

그래서 몇 가지 물어 있습니다 :

  1. 어떤 객체 캐시를 소유? 저장소, 서비스 또는 다른 것?
  2. 어떻게 캐시를 무효화합니까? 영구 객체가 업데이트 될 때 추적 상태를 유지합니까?
  3. 개체가 생성되는 세션의 시간 제한 값은 무엇입니까? 무효화 된 세션은 어떻게 캐시에 전달됩니까?
  4. "레지스트리"라고 할 때 "Windows 레지스트리"를 의미합니까?

Java 용 Spring에서는 대개 Hibernate와 EhCache를 사용하여 구성 가능한 캐싱을 가져옵니다. Spring JDBC 템플릿을 사용한다면 직접 작성해야한다. 리포지토리에 어떤 구현을 사용하고 있습니까?

+0

리포지토리 2. 현재 문제는 아닙니다. 현재 무효화되지 않습니다 ... 3. 실제로 변화를주지는 않습니다. 4. :-) 아니요, 그것은 소프 일 것입니다 (스파게티 지향 패턴) 글쎄, 독서 후, 다음에해야할 일을 알고 있습니다. 명확한 대답을위한 Thx. –