본문 바로가기

전체 글29

Patch & Put 차이점 Patch & PutSpring Boot의 CRUD API update부분에서 PATCH는 일부분만 변경할 때, PUT은 전체 변경할 때 사용하는 것으로 알고 있었는데, 더 정확한 차이점이 궁금해졌다.  @PutMapping 자원의 전체 수정, 자원 내 모든 필드를 전달해야 함, 일부만 전달할 경우 오류 요청 경로에 자원이 존재하는 경우 해당 자원을 payload 정보와 교체하는 메서드이다. 즉, PUT 메서드를 사용할 때 전송하는 payload만으로 자원의 전체 상태를 나타낼 수 있어야 한다. 새로운 자원을 생성해야 하는 경우 완전한 상태의 자원을 저장해야 하고 새로운 자원으로 대체하는 경우 대체하는 자원이 완전한 상태를 가지고 있어야 하기 때문이다.만약 PUT의 정의대로 전달 받은 payload가 .. 2023. 12. 7.
프로그래머스) 푸드 파이트 대회 문제 설명수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승리하게 됩니다.이때, 대회의 공정성을 위해 두 선수가 먹는 음식의 종류와 양이 같아야 하며, 음식을 먹는 순서도 같아야 합니다. 또한, 이번 대회부터는 칼로리가 낮은 음식을 먼저 먹을 수 있게 배치하여 선수들이 음식을 더 잘 먹을 수 있게 하려고 합니다. 이번 대회를 위해 수웅이는 음식을 주문했는데, 대회의 조건을 .. 2023. 12. 6.
통합 테스트, 단위 테스트 Q1)  통합 테스트와 단위 테스트의 차이점 단위 테스트는 전체 코드 중 작은 부분을 테스트하는 것으로 다른 컴포넌트들과 독립적인 반면, 통합 테스트는 단위 테스트와 달리 개발자가 변경할 수 없는 부분(ex. 외부 라이브러리)까지 묶어 검증할 때 사용한다.  단위 테스트 : 매우 간단하고 명확해야 하며 기본적으로 테스트를 위한 입력 값을 주어 그에 대한 함수의 출력 값이 정확 한지를 판단한다. 단일 서버 / 단일 프로세스 / 단일 쓰레드에서 돌아가는 테스트로, Disk I/O가 있어서는 안되고 Blocking call이 있어서도 안된다.통합 테스트 : 단일 서버 / 멀티 프로세스 / 멀티 쓰레드에서 돌아가는 테스트로, H2 같은 테스트용 DB를 사용할 수 있게 된다. DB에 접근하거나 전체 코드와 다양한.. 2023. 12. 4.
IoC Container, Bean, JPA 3 Layer Architecture 한 개의 클래스에 너무 많은 양의 코드가 존재하기 때문에 코드를 이해하거나 변경하기 어렵다.이러한 문제점을 해결하기 위해 서버에서의 처리 과정은 크게 Controller, Service, Repository 3개로 분리된다. Controller : 클라이언트의 요청을 받고, 로직 처리는 Service에게 전담 ( Request 데이터가 있다면 같이 전달 ), Service에서 처리 완료된 결과를 클라이언트에게 응답 Service : 사용자의 요구사항을 처리 ('비즈니스 로직'), DB 저장 및 조회가 필요할 때는 Repository에게 요청 Repository : DB 관리 (연결, 해제, 자원 관리), DB CRUD 작업을 처리 IoC(제어의 역전), DI(의존.. 2023. 11. 4.