项目需要在内部查询一个可能有1W~10w的数据然后进行操作,目前是用循环每次查100条来实现的。现在就想讨教一下,各位在实现这种逻辑的时候,你们的做法会是什么。
认证0级讲师
1. 먼저, 하이버네이트처럼 SQL을 조합하기 위해 자바 객체를 사용하거나, MyBatis처럼 쿼리를 위해 SQL을 직접 작성하는 방법을 사용하는 것이 좋습니다. 2. 현재 비즈니스 로직을 살펴보고 트랜잭션 작업이 포함되어 있으면 일괄 처리하는 것이 좋습니다. 컨트롤러 계층에서 제어하고 페이징에서 데이터를 처리할 수 있습니다.
단순한 쿼리인가요, 아니면 쿼리한 후 수정해야 하나요? 단일 쿼리의 경우 원하는 대로 재생할 수 있으며 메모리만 제어하면 됩니다. 수정이 필요한 경우 위 내용을 참고하세요.
페이징이 가능하다면 페이징을 하는 것이 가장 좋습니다. 쿼리 후에도 수행할 작업이 남아 있으면 jdk8에서 스트림을 사용할 수 있습니다.
일괄 처리와 약간 비슷합니다. 기본 키를 한 번에 알아낸 후 여러 스레드로 일괄 처리하는 것이 가장 좋습니다
1. 먼저, 하이버네이트처럼 SQL을 조합하기 위해 자바 객체를 사용하거나, MyBatis처럼 쿼리를 위해 SQL을 직접 작성하는 방법을 사용하는 것이 좋습니다.
2. 현재 비즈니스 로직을 살펴보고 트랜잭션 작업이 포함되어 있으면 일괄 처리하는 것이 좋습니다. 컨트롤러 계층에서 제어하고 페이징에서 데이터를 처리할 수 있습니다.
단순한 쿼리인가요, 아니면 쿼리한 후 수정해야 하나요? 단일 쿼리의 경우 원하는 대로 재생할 수 있으며 메모리만 제어하면 됩니다. 수정이 필요한 경우 위 내용을 참고하세요.
페이징이 가능하다면 페이징을 하는 것이 가장 좋습니다. 쿼리 후에도 수행할 작업이 남아 있으면 jdk8에서 스트림을 사용할 수 있습니다.
일괄 처리와 약간 비슷합니다. 기본 키를 한 번에 알아낸 후 여러 스레드로 일괄 처리하는 것이 가장 좋습니다