2011-02-04 5 views
1

Grails에서 작업 중입니다. 어느 시점에서 나는 그들의 ID를 기반으로 db로부터 많은 객체 집합을 가져와야합니다. 이 id를 id로 사용하면 성능이 매우 나쁩니다. GORM에서 객체 세트 가져 오기

ids.each{ 
    Myclass.findById(id) 
    ... 
} 

가 저장 일괄 작업에 유용한 withTransaction 폐쇄가 있음을 감안할 때, 그것은 그들을 저장하는 대신, 객체를 가져 오기 위해 그런 일을 할 수 있습니까?

또 다른 아이디어는 같은 긴 HQL 쿼리 수 :

"select * from Myclass where (id = 1) OR (id = 2) ... OR (id = n)" 

이가 확인 해결책인가?

감사합니다.

답변

2

this question에서 언급했듯이 HQL은 GORM의 find() 메소드가 지원하는 값 그룹을 기반으로 선택하기위한 더 나은 구문을 지원합니다. GORM dynamic finders도 같은 구문을 지원합니다 : 귀하의 작업이 읽기 전용의 경우

def myObjs = MyClass.findByIdInList(ids) 

마찬가지로, 당신이 Hibernate는 읽기 전용 거래 수 있도록 할 수있는 최적화를 활용합니다 getAll()을 사용할 수 있습니다.

관련 문제