오른쪽 - 데이터베이스에서 1,000,000 개의 레코드를 삭제하고 싶습니다. 트랜잭션이 시간 초과되어 실패하는 시간이 오래 걸립니다. - 일괄 처리로 삭제하면 트랜잭션 당 25000 개의 레코드가 발생합니다. Oracle에서 MySQL 또는 ROWNUM의 제한 절을 사용합니다. 위대한 작품입니다.Java ORM을 통한 일괄 삭제/삭제
데이터베이스 독립적 인 방식으로이 작업을 수행하려고합니다. 그리고 JPA/Hibernate를 사용하는 기존 Java 코드베이스에서.
행운입니다. JPA Query.setMaxResults 및 setFirstResult에는 쓰기 '검색어'(예 : 삭제)에 대해 효과가 없습니다. 개별적으로 삭제하기 위해 많은 엔티티를 메모리로 선택하면 매우 느리고 벙어리입니다.
그래서 원시 쿼리를 사용하고 응용 프로그램 코드에서 '제한'절을 관리합니다. orm.xml에이 절을 캡슐화하면 좋겠지 만 ... "Hibernate Annotations 3.2는 기본 쿼리를 사용하는 대량 업데이트/삭제를 지원하지 않습니다." - http://opensource.atlassian.com/projects/hibernate/browse/ANN-469.
저는 이것이 일반적인 문제라고 생각합니다. 아무도 더 나은 데이터베이스 독립적 솔루션을 얻었습니까?
질문자가 이미이 작업을 수행하고 있지만 삭제가 너무 느려서 시간이 초과된다는 것을 알았습니다. –