방금 검색 한 객체 목록의 JDO 지속성에 다소 문제가 있습니다.Google App Engine (Java) + Spring 관리 PersistenceManager
는 내가 뭘 원하는에 있습니다 :
- 것은 "주문"의 목록을 가져 오기
- 수정 하나의 속성 "상태"
- 는 "주문"
의 대량 업데이 트를 확인 무엇 나는 지금까지 "ID를 가진 객체 ... 다른 객체 관리자가 관리합니다"입니다. 하지만 잠깐, 나는 봄이 없으면 그런 문제에 직면하지 않았다!
나는 이런 식으로 디버깅하려고 : 내 모든 DAO를이 JdoDaoSupport을 확장try {
System.out.println(getPersistenceManager().hashCode());
getPersistenceManager().makePersistentAll(entities);
} finally {
getPersistenceManager().close();
}
:
List<Orderr> orders = orderDao.findByIdAll(ordersKeys);
for(Orderr o : orders) {
System.out.println(JDOHelper.getPersistenceManager(o).hashCode());
//hashcode is 1524670
o.setSomething(somevalue);
}
orderDao.makePresistentAll(orders); //hashcode inside is 31778523
makePersistentAll은 아무것도하지만하지 않습니다. Pmf는 봄에 주사되고 관리됩니다.
마지막으로 findByIdAll 이후 지속성 관리자가 닫히는 이유는 무엇입니까? 아니면 새로운 지속성 관리자 인스턴스를 얻는 이유는 무엇입니까? 내 findByIdAll 메서드는 지속성 관리자에서 close를 호출하지 않습니다.
물론 각 "주문"에 대해 makePersistent를 호출하면 잘 작동합니다. 그러나
UPD ... 비즈니스 및 데이터베이스 로직의 레이어링 나누기 그냥 makePersistentAll에 대한 모든 호출은 마이그레이션이 PersistenceManager에 관리 튀어 결국에서 작동하지 않는 것을 발견했다. 봄이 오기 전에 저는 평범한 오래된 PMF.get() 도우미를 사용했고 모든 것이 반짝 반짝 빛났습니다!
GAE 앱을 개발하고 있지만, 특정 애플리케이션이 아닙니다. localhost SDK (Jetty 만 제외하고)와 동일한 문제가 있습니다. 그리고 나는 "DB 세션 관리자"가 PersistenceManagerFactory이지만 PersistenceManager는 아니라고 생각했습니다. 각 객체에서 내 오래된 PersistenceManager를 얻을 수는 있지만 그렇게하지 않아도됩니다. 그것은 전혀 닫히지 않았 음을 의미하지만, 봄부터 dao에서 제거되었습니다. – vshulyak
흠. 그렇다면 우리가 당신을 도울 수있는 능력을 넘어선 것 같습니다. GAE 앱에서 Spring을 사용했지만 관계가 행복하지 않았습니다.죄송합니다. 행운을 빈다. –
감사합니다. 네, 그 질문은 명백하지 않습니다 ... – vshulyak