2012-05-30 4 views
1

LinkedBlockingQueue가 있는데 모든 요소를 ​​데이터베이스에 저장하고 싶습니다. 나는 하나씩 그것을 구할 수 있다는 것을 안다 :Play JPA에서 개체 목록을 저장하는 방법

그러나 나는 그것이 모든 요소들을 반복하고 각각을 위해 새로운 연결을해야한다는 것을 의미한다. 한 번에 전체 목록을 삽입 할 수 있습니까?

+0

모든 요소를 ​​반복하고 save()를 호출 할 수 있습니다. 그러나 매번 새로운 연결을 만들지는 않습니다. 재생중인 트랜잭션은 HTTP 연결에 바인딩됩니다. –

답변

2

재생 1.x에서 서버가 요청을 받으면 play/jpa가 데이터베이스 트랜잭션을 엽니 다. 이 트랜잭션은 잘못된 것이 있으면 자동으로 롤백되고, 그렇지 않으면 응답이 클라이언트에 전송 될 때 자동으로 커밋됩니다.

따라서 JPA 엔티티를 순환하여 하나씩 차례로 save()를 호출하더라도 동일한 트랜잭션에서 모두 동일한 연결로 실행됩니다.

나는 Play 2에서 같은 방식으로 작동한다고 생각 하겠지만 정직하게도 나는 모른다.

1

간단한 대답은 아니오가 아닙니다. 한 줄 아래로 모든 개별 개체에 대한 삽입 쿼리를 실행해야합니다.

각 삽입에 대해 새 연결을 만들 필요는 없습니다. 각 반복에서 동일한 연결에 연결 및 파이어 삽입을 만들어야합니다.

+0

MySQL에는 한번에 여러 행을 삽입하는 것과 같은 JPA가 없습니까? 여러 행을 삽입 할 수 있기 때문에 쿼리를 한 번에 하나의 행을 삽입하는 것에 반대하는 속도가 훨씬 빨라집니다. –

0

this question이 더 있습니다. 기본 DB에서 원하는 것을 수행하는 방법을 알고 있다면 네이티브 쿼리 (EntityManager를 통해 만들 수 있음)를 사용할 수도 있습니다.

관련 문제