Eclipse IDE, EclipseLink, JPA 및 MySQL을 사용하여 응용 프로그램을 개발 중입니다. 앱을 처음 실행하는 동안 표의 콘텐츠를 삭제해야합니다. 그러나 삭제 후 응용 프로그램은 새 연결을 만들지 만 빈 테이블에서 이전 데이터를 읽습니다. 초기 작업은 작업이 수행 될 때마다 new EntityManager
을 작성하는 것이 었습니다.JPA 캐시가 유효하지 않음
private EntityManager entityManager;
public FacadeFactory() {
entityManager = DBConnection.connect();
}
JPA 캐싱을 비활성화 한 후에 문제가 해결되었습니다.
성능 문제로 인해 EntityManager
은 데이터베이스에 단 하나의 연결을 열기 위해 싱글 톤으로 변경되었습니다.
private static FacadeFactory instance;
private EntityManager entityManager;
private FacadeFactory() {
entityManager = DBConnection.connect();
}
public static FacadeFactory getInstance(){
if(instance == null){
instance = new FacadeFactory();
}
return instance;
}
이제 캐시가 여전히 비활성화 된 경우에도 이전과 동일한 문제가 발생합니다. persistence.xml
및 코드에서 모두 캐싱을 사용하지 않으려 고했지만 그 중 아무 것도 작동하지 않습니다.
<property name="eclipselink.cache.shared.default" value="false"/>
entityManager.getEntityManagerFactory().getCache().evictAll();
아무도 도와 줄 수 있습니까?
필요할 때 새로운 EntityManager를 사용할 때 어떤 성능 문제가 있었습니까? 가벼운 무게를 사용해야하는데, 어쨌든 비활성화하려는 추가 캐싱 만이 표시되어야합니다. – Chris
@ 크리스, 알았어. d 매번 새로운 EntityManager를 생성 할 때 프로그램이 약간 느리게 실행되었습니다. – sebi