[TIL] Stream 활용하기, CI/CD 파이프라인 개발, 엔티티 개발 협업

2025. 2. 20. 22:16·TIL
728x90
반응형
SMALL

오늘 한 일

  • 팀원간 작업 현황 파악 및 목표 재설정
  • Stream을 활용한 엔티티 연결, DTO 객채로 변환
  • CI/CD 파이프라인 개발
  • Index공부

작업 내용

팀원간 작업 현황 파악 및 목표 재설정

오후4시, 저녁10시마다 팀원간의 작업상황을 수시로 체크하고 다음 날 진행해야 할 개발과정에 대한 진도를 다시 설정했다.

나를 제외한 세 분이 I 성향을 갖고 있어서 소통이 항상 조용조용하고 말수가 없는 편이었지만 다들 최선을 다해주고 있는것 같아서 너무 감사하기도했고 조금은 답답한 마음도 들기도했다... ㅋㅋㅋㅋㅋㅋ 하지만 반대로 생각해보면 아직 개발을 많이 안해본 분들도 계시고 각자의 생각에 정리할 시간이 필요하기도하니 조금만 서로를 이해하면 다 그럴수 있다는 생각이 들었다.


이렇게 각자 업무를 다시 분담하고 지금도 수시로 팀원들의 개발상황을 체크하고 있다.

과연 개발이 다 완료되면 정상적으로 각 API가 작동할 수 있을지 기대가된다 ㅎㅎ

Stream을 활용한 엔티티 연결 및 DTO객체 변환

  • Stream을 사용하면 기존 반복문과 같은 구문과 달리 병렬적으로 처리 가능하며 더 가독성을 높일 수 있다.

Stream을 사용하지 않았다면 코드가 길어지고 for문을 사용해야 했지만, 메서드 체이닝을 통해 가독성을 높이고 더 간결하게 작성할 수 있다.

오늘은 Stream에서 map()과 mapToInt()를 사용했다.
stream()을 사용하면 car.getMenuCarts()에서 가져온 리스트를 Iterator처럼 요소를 하나씩 처리할 수 있도록 변환한다.
이후 map()을 사용하여 각 MenuCart 객체를 CartItemDto로 변환하는데, CartItemDto::from과 같은 메서드 참조(::)를 사용하면 메서드를 직접 호출하지 않고도 변환이 가능하다.
이 방식은 람다 표현식의 축약형이며, 컴파일러가 추론할 수 있는 경우에만 사용할 수 있다.

또한, mapToInt()는 getTotalPrice() 또는 getQuantity() 값을 정수로 변환하여 IntStream을 반환하고, 이를 sum()을 이용해 전체 합계를 계산할 수 있다.

이 과정을 3단계로 나눌 수 있는데 가공(stream) / 중간 연산(map, mapToInt) / 최종 연산(toList(), sum() 으로 구분할 수 있다.

이 방식은 람다와 동일하며 추론이 가능한 메서드들에 대해서 사용이 가능하다는 특징이 있다.

//메뉴와 장바구니 정보를 이용해 응답 DTO 반환
        List<CartItemDto> cartItemDtos = cart.getMenuCarts().stream()
                .map(CartItemDto::from)
                .toList();

        int totalPrice = cart.getMenuCarts().stream()
                .mapToInt(MenuCart::getTotalPrice)
                .sum();

        int totalQuantity = cart.getMenuCarts().stream()
                .mapToInt(MenuCart::getQuantity)  // MenuCart에서 quantity 값 추출
                .sum();  // 총 합계

CI/CD 작업

  1. EC2 서버 개설 2. PostgreSQL 서버 개설(Docker) 3. Dockerfile 생성 4. Git Actions를 사용해서 CI/CD 파이프라인 개발 5.duckDns 무료 도메인 적용 6. nginx를 사용한 SSL 적용
    이 과정을 수행하였다. 이 과정에서 비용이 발생할 수 있는 탄력적 IP, RDS Public 설정은 발표 이전에나 사용하게 될 것 같다. 만약 이후에도 문제가 없다면 변동없이 지금처럼 쓸 것 같다.

Index가 무엇이고 JPA에서는 Index를 자동으로 생성하는게 어떤게 있는지, 적절한 인덱스 개수

Index 상식, JPA에서 Index를 자동으로 생성하는 조건, 적절한 인덱스의 개수는?

728x90
반응형
SMALL

'TIL' 카테고리의 다른 글

[TIL] 모놀리딕 스프링 부트 프로젝트를 수행하고 내가 공부해야 할 것들  (0) 2025.02.26
[Spring Security 예외 처리] 인증 및 인가에 대한 예외처리 방법  (0) 2025.02.25
[TIL] Filter예외 처리, 서버 배포  (0) 2025.02.19
[TIL] 팀원간 코드 리뷰 진행 및 인덱스가 많아지면 생기는 문제, JPA의 flush 발생하는 조건  (0) 2025.02.18
[TIL] SoftDelete 개발 방식, 서브 모듈 설정, PR 및 Postman으로 API문서 공유하기  (0) 2025.02.17
'TIL' 카테고리의 다른 글
  • [TIL] 모놀리딕 스프링 부트 프로젝트를 수행하고 내가 공부해야 할 것들
  • [Spring Security 예외 처리] 인증 및 인가에 대한 예외처리 방법
  • [TIL] Filter예외 처리, 서버 배포
  • [TIL] 팀원간 코드 리뷰 진행 및 인덱스가 많아지면 생기는 문제, JPA의 flush 발생하는 조건
공부하고 기억하는 공간
공부하고 기억하는 공간
IT 비전공자로 시작하여 훌륭한 개발자가 되기 위해 공부하고 있는 공간입니다. 틀린 내용이나 부족한 부분이 있으면 댓글로 알려주세요 바로 수정하겠습니다.
    250x250
  • 공부하고 기억하는 공간
    IT - railroad
    공부하고 기억하는 공간
  • 전체
    오늘
    어제
    • 분류 전체보기 (315)
      • 면접 준비 (36)
        • OS (6)
        • Spring Security (0)
        • Java (2)
        • DB (9)
        • Network (3)
      • ElasticSearch (2)
      • Kafka (4)
      • Spring (22)
        • Spring Cloud (7)
        • Security6 (5)
        • JPA (12)
        • 프로젝트 리팩토링 회고록 (4)
        • Logging (8)
        • Batch (2)
      • Redis (17)
        • Redis 개념 (8)
        • Redis 채팅 (5)
        • Redis 읽기쓰기 전략 (1)
      • AWS (11)
      • 리눅스 (29)
        • 리눅스 마스터 2급 (5)
        • 네트워크(기초) (7)
        • 리눅스의 이해 (6)
        • 리눅스의 설치 (2)
        • 리눅스 운영 및 관리 (6)
      • JAVA-기초 (16)
        • JAVA기본 (11)
        • Design Pattern (5)
      • JSP (27)
        • JSP 기본 개념 (10)
        • JSP (1)
      • SQL (1)
      • TIL (36)
      • 문제 풀이 (2)
        • Programmers (9)
        • 백준 문제풀이 (28)
      • JavaScript (10)
      • HTML (17)
      • Ngrinder (1)
        • Ngrinder 문서 정리 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      JSP
      redis
      HTML
      자바 반복문
      redis 채팅
      Spring
      CSS
      jsp기초
      jsp request
      Til
      레디스
      리눅스마스터2급
      스프링프레임워크
      자바
      Spring Data Redis
      백준
      자바 면접
      리눅스마스터2급정리
      자바기초
      java
      자바 면접질문
      프로그래머스
      리눅스
      spring redis
      JavaScript
      자바 알고리즘
      springsecurity
      자바스크립트
      Springframework
      JS
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    공부하고 기억하는 공간
    [TIL] Stream 활용하기, CI/CD 파이프라인 개발, 엔티티 개발 협업
    상단으로

    티스토리툴바