문제

나는 JPA/OpenJPA를 처음 접했고 전화하지 않으면 EntityManager.clear() 엔티티를 지속하면 나는 얻는다 OutOfMemoryError (루프에 새로운 엔티티를 계속 추가합니다). 이것이 예상되는 동작인지 확실하지 않습니다.

그래서, 나는 단체를 명시 적으로 분리해야합니까? 내가 그렇지 않다면 어쨌든 좋은 연습입니까?

도움이 되었습니까?

해결책

JPA에 대한 경험이 많지 않습니다. 그러나 이것은 유용 할 것입니다 -
JPA에서는 다음 중 하나입니다.
- 각 트랜잭션에 대해 새 엔티티 관리자를 만듭니다.
- 각 트랜잭션 후 CLEAR ()을 호출하여 지속성 컨텍스트를 지우십시오.

다른 팁

지속성 프로세스에 가져 오는 객체 수에 따라 다릅니다 (읽기). 많은 숫자 (또는 일부 객체가 크면)를 처리하면 Clear ()를 사용하는 것이 합리적 일 수 있습니다. 객체를 읽을 때마다 JPA Imp에 의해 L1 캐시에 넣어야합니다.

디자인에 어딘가에 뭔가 잘못된 것 같네요. 일반적으로 엔티티가 엔티티 관리자의 범위를 벗어난 후에는 실체가 분리됩니다. 그리고 그것이 당신이 범위를 벗어난 게으른 부하 관계를 할 수없는 이유 중 하나입니다.

내 경험에 관한 한, 나는 em.clear ()를 거의 사용하지 않았다. 최대 절전 모드 구현과 Toplink Essentials를 사용했습니다. 아직 OpenJPA에 대한 경험이 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top