
코드의 성능과 가독성을 개선하는 것은 소프트웨어 개발의 중요한 부분입니다. 특히 데이터베이스 조회와 같은 작업에서 효율적인 코드를 작성하는 것은 시스템의 전반적인 성능에 큰 영향을 미칩니다.
이번 글에서는 회사에서 사용하는 기존의 중복값 체크 로직을 개선하는 과정을 통해 왜 특정 코드로 변경해야 하는지, 그리고 이러한 변경으로 인해 어떤 장점이 있는지를 알아보겠습니다.
stream().filter()먼저, 기존의 중복값 체크 로직을 살펴보겠습니다.
long existCount = codeRepo.findAll().stream().filter(e -> e.getCode().equals(code)).count();
if (existCount > 0) {
// 중복 값 처리 로직
}
이 코드는 codeRepo.findAll()을 호출하여 데이터베이스의 모든 레코드를 가져온 후, Java Stream API를 사용하여 code와 일치하는 레코드를 필터링하고 그 개수를 세어 중복 여부를 확인합니다. 로직의 다른 부분에서 codeRepo.findAll()의 결과를 사용해야 한다면 괜찮은 방법일 수 있지만, 현재는 중복값 확인을 위해서만 사용되고 있습니다.
비효율적인 데이터베이스 조회:
findAll() 메서드는 데이터베이스의 모든 레코드를 메모리로 로드합니다.성능 저하:
existsByCode()이제 개선된 코드를 살펴보겠습니다.
boolean exist = codeRepo.existsByCode(code);
if (exist) {
// 중복 값 처리 로직
}
이 코드는 existsByCode() 메서드를 사용하여 데이터베이스에서 code가 존재하는지 여부를 직접 확인합니다.
효율적인 데이터베이스 조회:
existsByCode() 메서드는 데이터베이스에 존재 여부를 묻는 단일 쿼리를 실행합니다. 이는 필요한 데이터만 조회하므로 불필요한 메모리 사용을 줄여줍니다.성능 향상:
가독성 및 유지보수성:
existsByCode() 메서드는 이름만으로도 코드의 의도를 명확히 전달합니다. 이는 코드 가독성을 높이고, 유지보수 시 코드의 이해를 돕습니다.<<작성 예정>>
이번 포스팅에서는 중복값 체크 로직을 개선하기 위해 stream().filter() 방식을 existsByGrpCd() 방식으로 변경하는 과정을 살펴보았습니다. 이러한 변경을 통해 성능을 향상시키고, 코드의 가독성을 높이며, 유지보수성을 개선할 수 있었습니다. 데이터베이스 조회와 관련된 작업에서는 항상 효율적인 방법을 선택하여 시스템의 전반적인 성능을 최적화하는 것이 중요합니다.