2015-01-21 4 views
3

Morphia를 쿼리 할 때 동일한 개체 인스턴스를 가져올 수 있습니까? 이것은 현재 데이터베이스에서 ServerInstances를 찾기 위해 수행하고있는 쿼리입니다.Morphia는 매번 동일한 인스턴스를 생성하기 위해 쿼리 결과를 캐시 할 수 있습니다.

Database.get().getDatastore().find(ServerInstance.class).field("_id").equal(id).get() 

Database.get().getDatastore()은 앞서 만든 Morphia 데이터 저장소를 반환합니다.

쿼리를 두 번 실행하면 두 결과가 다릅니다. 이것은 예를 들어지도에서 원래 인스턴스를 사용한 문제입니다. ServerInstance#equals(Object obj) 메서드를 일치하는 ID와 일치하도록 업데이트하는 방법에 대해 생각해 보았습니다. 그러나 이것은 좋은 생각이 아닙니다. 또한 첫 번째 인스턴스에서 일부 @Transient 필드를 업데이트한다는 사실은 두 인스턴스가 더 이상 동일하지 않다는 것을 의미합니다.

Morphia에서 사용하는 쿼리 시스템은 일치하는 개체에 대한 자체 검사를 작성하는 것보다 훨씬 좋지만 이러한 개체에 대한 로컬 캐시를 만드는 방법에 대해 생각해 보았습니다.

본질적으로 Morphia에 Morphia가 사용할 수있는 로컬 캐싱 시스템이 있거나 Morphia 쿼리 시스템을 계속 사용할 수 있도록 개체를 캐시하는 더 좋은 방법이 있다면 꼭 알아야 할 사항입니다.

미리 감사드립니다.

답변

2

Morphia는 현재 이와 같은 캐싱 메커니즘을 가지고 있지 않습니다. 이와 같은 복잡한 점을 감안할 때 모피 아를 적절하게 만들지는 않을 것입니다. 당신은 ehcache와 같은 무언가로 그것을 앞당길 수 있습니다.

+0

우리는 현재 Redis를 사용하고 있으므로 대신 캐싱 시스템을 구현하는 것이 더 쉬울 것이라고 생각합니다. 나는 당신의 대답을 받아 들일 것이다. 비록 그것이 질문에 대답 할 때, 고마워! – ParaPenguin

+0

우리는 비슷한 목적으로 구 회사에서 couchbase를 사용했습니다. 완벽하게 유효합니다. 행운을 빕니다. – evanchooly