2016-07-13 8 views
0

JPA를 사용하여 레코드를 Oracle 데이터베이스에 보존합니다. 매번 응용 프로그램을 실행할 때마다 특정 디렉토리로 이동하여 거기에있는 모든 단일 파일을 구문 분석하고 테이블에로드합니다. 일반적으로 수천 개의 파일이 처리됩니다.EntityManagerFactory를 너무 많이 생성하지 않아야합니까?

새로운 EntityManagerFactory는 파일을 처리 할 때마다 그리고 레코드가 삽입 될 때마다 만들어집니다. 따라서 EMF는 매회 수천 번 열립니다. 디버깅 할 때 EMF 생성이 실행 시간의 90 % 이상을 차지하는 가장 시간이 많이 걸리는 단계라는 것을 발견했습니다. 평균적으로 새로운 EMF를 만드는 데 2-3 초 정도 걸립니다. 어쩌면 내가 파일의 반복이 시작되기 전에 응용 프로그램의 시작 부분에 한 번 EMF 연결을 열어야합니까? EMF를 전체적으로 열어 놓는 것이 좋은 습관입니까?

+1

EntityManagerFactory는 스레드로부터 안전하며, 사용자가 발견 한 것처럼 지속성 단위에 필요한 모든 것을 가져 와서로드하고 확인하는 데 많은 설정을합니다. EntityManagers는 경량이지만 스레드로부터 안전하지 않습니다. EMF가 중앙/정적으로로드되는 동안 필요한 경우 이러한 객체를 가져와야합니다. – Chris

+0

@Chris 차이점을 설명해 주셔서 감사합니다. 제발 대답 해 주시면 제가 닫을 겁니다. – ddd

답변

1

내 의견에서 제외 : EntityManagerFactory는 스레드로부터 안전하며, 사용자가 발견 한 것처럼 지속성 단위에 필요한 모든 것을 얻고로드하고 확인하는 설정이 다양합니다. EntityManagers는 경량이지만 스레드로부터 안전하지 않습니다. EMF가 중앙/정적으로로드되는 동안 필요한 경우 이러한 객체를 가져와야합니다.

관련 문제