안녕하세요. 회사에서 배치를 돌려 약 10만건 정도의 데이터를 삽입해야 했습니다. 1번과 2번에서 데이터를 조회 하여 데이터를 합친 후 DB에 저장하는 단순한 프로세스 였습니다. DB에 저장시 save()를 사용했다가 반나절 이상이 걸렸습니다. save()를 사용하지 않고 saveAll()로 처리 하였더니 시간이 삼분의 일로 줄어 들었습니다. 이번 기회에 Jpa에서 데이터를 저장하는 방법인 save() / saveAndFlush() / saveAll()의 차이점 대해 정리하려고 합니다. ※ 사실 벌크 삽입은 Spring JDBC의 JdbcTemplate를 이용하면 훨씬 빠르게 Batch Insert를 수행할 수 있습니다. save @Transactional @Override public S save(S ..
API를 통해 Mysql DB에서 데이터를 등록 및 수정 작업을 마친 후, 카프카를 통해 최신화된 데이터를 다른 서버에 전송하는 로직이 있다. @Service @RequiredArgsConstructor public class Service { private final KafkaService kafkaService; private final Reader reader; private final Writer writer; @Transactional public void add(Request request) { // 데이터 저장 Entity entity = writer.save(request); // 카프카로 데이터 전송 kafkaService.send(savedEntity); } @Transactional ..
public static Apple 잠금해제상태_스케줄_생성() { return Apple.builder() .id(1) .name("사과") .build(); } 테스트코드에서 Fixture로 Apple 엔티티를 생성할려구 했다. @AllArgsConstructor @NoArgsConstructor( access = AccessLevel.PROTECTED ) @Builder @Entity public class Apple { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; //... 엔티티 설정은 다음과 같다. JpaRepository를 상속받아 save()메소드로 생성한 엔티티를 저장할려구 했는데 detached ent..