본문 바로가기

카테고리 없음

Builder 패턴을 사용하여 데이터 넣기 vs Repository에서 데이터 조회하여 리스트에 넣기

 /* 프로젝트 상세 조회 */
    @Override
    @Transactional
    public Response getProject(Map<String, String> headers, ProjectGetRequestDto projectGetRequestDto) {

        validateUser(headers);
        Project project = validateProjectAndAuth(headers, Long.valueOf(projectGetRequestDto.getBody().getProjectId()));

        GetProjectResponseDto getProjectResponseDto = GetProjectResponseDto.builder()
                .projectInfo(ProjectResponseDto.builder()
                        .id(project.getId())
                        .projectName(project.getProjectName())
                        .menuName(project.getMenuName())
                        .description(project.getDescription())
                        .uiTemplate(project.getUiTemplate())
                        .version(project.getVersion())
                        .updateTime(project.getUpdateTime())
                        .status(project.getStatus())
                        .currentStage(project.getCurrentStage())
                        .build()
                )
                .contentList(orderStatusRepository.findByProject(project).orElse(null))
                .conditionList(searchConditionRepository.findByProject(project).orElse(null))
                .build();

        return buildResponse(project);


    }

 

 

프로젝트의 projectInfo처럼 builder 패턴을 사용하여 데이터를 넣는 방법과 repository에서 조회하여 contentList, conditionList에 데이터를 넣는 방법 중 어느 것이 더 속도나 성능 면에서 좋은지에 대해 설명드리겠습니다.

1. Builder 패턴을 사용하여 데이터 넣기

  • 장점:
    • 가독성: 코드가 명확해지고 읽기 쉽습니다.
    • 불변성: 객체가 불변(immutable)인 경우 안전합니다.
    • 유지보수성: 객체의 생성과 관련된 복잡성을 숨길 수 있어 유지보수가 용이합니다.
  • 단점:
    • 성능: 빌더 패턴은 일반적으로 추가적인 메모리 할당과 메서드 호출을 수반하므로 약간의 오버헤드가 발생할 수 있습니다.

2. Repository에서 데이터 조회하여 리스트에 넣기

  • 장점:
    • 성능: Repository에서 데이터를 직접 조회하여 할당하는 것이기 때문에 불필요한 메서드 호출을 줄일 수 있습니다.
    • 간결성: 단순한 데이터 조회 및 할당이기 때문에 코드가 단순할 수 있습니다.
  • 단점:
    • 가독성: 빌더 패턴만큼 가독성이 높지 않을 수 있습니다.
    • 유지보수성: 데이터 할당 로직이 분산될 수 있습니다.

성능 비교

  • 데이터 양이 적을 때:
    • 빌더 패턴의 오버헤드가 거의 무시할 수 있는 수준이기 때문에 가독성과 유지보수성 측면에서 빌더 패턴을 사용하는 것이 좋습니다.
  • 데이터 양이 많을 때:
    • 성능 최적화가 필요하다면 빌더 패턴보다는 repository에서 조회한 데이터를 직접 할당하는 방식이 더 나을 수 있습니다. 이는 빌더 패턴의 오버헤드가 누적될 수 있기 때문입니다.

결론

일반적으로는 빌더 패턴을 사용하는 것이 가독성과 유지보수성 측면에서 유리합니다. 그러나 성능이 중요한 경우에는 데이터를 직접 할당하는 방법이 더 나을 수 있습니다. 프로젝트의 특정 요구사항과 데이터 양에 따라 적절한 방법을 선택하는 것이 중요합니다.