내 서블릿의 doGet 메소드에서 JPA TypedQuery를 사용하여 데이터를 검색하고 있습니다. HTTP 요청 메서드를 통해 원하는 데이터를 가져올 수 있습니다. 데이터를 얻는 방법은 대략 10 초 정도 걸리며 한 번의 요청을 할 때 모두 좋다. 이 문제는 동시에 여러 요청을받을 때 발생합니다. 동시에 4 번 요청을하면 4 가지 쿼리가 모두 정리되고 40 초가 지나면 모든 데이터가 다시 반환됩니다. JPA에 병렬로 4 개의 개별 쿼리를 생성하려면 어떻게해야합니까? persistence.xml에서 설정이 필요한 것이거나 코드 관련 문제입니까?
참고 : 또한 스레드에서이 코드를 실행 해 보았습니다.
링크와 내 이해를 높이기위한 적절한 용어를 이해할 수 있습니다.JPA/Entity Manager에서 일괄 처리 대신 병렬 쿼리를 수행하도록하려면 어떻게해야합니까?
감사합니다.
try{
String sequenceNo = request.getParameter("sequenceNo");
EntityManagrFactory emf = Persistence.createEntityManagerFactory("mydbcon");
EntityManager em = emf.createEntityManager();
long startTime = System.currentTimeMillis();
List<Myeo> returnData = methodToGetData(em);
System.out.println(sequenceNo + " " + (System.currentTimeMillis() - startTime));
String myJson = new Gson().toJson(returnData);
resp.getOutputStream().print(myJson);
resp.getOutputStream().flush();
}finally{
resp.getOutputStream().close();
if (em.isOpen())
em.close();
}
4 개 simulaneous 요청 샘플
로컬 호스트 /에게 MyServlet/mycodeblock? sequenceNo = A
로컬 호스트 /에게 MyServlet/mycodeblock? sequenceNo = B
로컬 호스트 /에게 MyServlet/mycodeblock? sequenceNo = C
로컬 호스트 /에게 MyServlet/mycodeblock? sequenceNo D =
얻어진 프린트 명령문
38002
B 38,344
C 38785
D 39065
내가 원하는 것은
9002
B 9344
C 9785
는 4 별도의 GET-요청을 할 경우 이러한 요청에 호출 할 필요가 10065
방향 추적을 주셔서 대단히 감사합니다. 나는 얼마 동안 다른 프로젝트로 지시 받았고 회신하는 것을 잊었다. 내 문제가 두 번째 사항에 해당한다고 확신합니다. 일단이 문제로 돌아가서 내가 겪고있는 문제를 해결하면 답변을 드릴 것입니다. – FCoffee