목록2025/03 (22)
개발지식 먹는 하마 님의 블로그
DTODTO는 Controller - Service - Repository 계층 간 데이터를 전달하는 객체이다.(Entity에서 필요한 부분만 꺼내서 포장하는 부분이라고 생각할 수 있을 것 같다.)Entity를 직접 노출하지 않기 때문에 필드를 보호한다.또한 필요한 필드만 포함하여 성능을 최적화한다. DTO와 Entity의 차이항목DTOEntity목적데이터 전달데이터 저장사용 범위Controller - Service - Repository JPA, 데이터 베이스캡슐화비즈니스 로직 없이 데이터만 포함비즈니스 로직 포함 가능변경 가능성API에 따라 유연한 변경데이터베이스 스키마 변경 필요설계사용자(데이터를 사용하는 개발자) 친화적데이터베이스 친화적 DTO에서 Validation으로 검증하지 못한 부분을 서..

🔍 유효성 검사우리는 Request Body, RequestParam, PathVariable 등의 방식으로 클라이언트가 보낸 데이터를 받아서 처리한다.이때, 받은 데이터가 잘못된 혹은 허용되지 않는 값이거나 Null 인지 등의 여부를 확인해주어야 한다.이를 위해 데이터가 유효한 값인지 아닌지를 확인하는 유효성 검사가 필요한다.🛠️ Spring에 유효성 검사 기능 추가하기프로젝트에 유효성 검사 기능을 추가하려면 spring-boot-starter-validation 라이브러리를 의존성으로 추가해야 한다.[ Gradle ]dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation'}그리고 꼭 Gradl..

⚙️ 스케줄러 기능✅ 유저, 할 일 생성✅ 유저 및 할 일 조회✅ 유저 이름 또는 할 일의 내용, 해당하는 유저 수정✅ 유저 삭제, 할 일 삭제API 명세서postman을 활용해 별도의 문서로 정리해 놓았다.https://documenter.getpostman.com/view/43241868/2sAYkLmcYN일정과 유저의 관계일정과 유저는 1:N 관계이다.일정은 유저의 정보가 필요하지만, 유저에게 할당되어 있는 일정은 없을 수도, 매우 많을 수도 있다.유저의 고유 식별자인 user_id를 외래키로 두 테이블이 연결된다.🗂️ 3 계층 구조Layered Architecture를 기반으로 Controller, Service, Repository로 계층을 나누어 구현하였다.💬 트러블 슈팅1. 자동으로 생성..
챌린지반 코드 리팩토링 시간을 통해 키오스크 과제를 다른 사람들은 어떻게 해결했는지를 알 수 있었다.해당 코드들이 어떤 면에서 클린하고 좋은 코드인지를 알 수 있어 굉장히 유익했다.그중에서도 가장 기억에 남는 부분은 빌더 패턴과 유사한 방법의 MenuItem 생성 코드였다.List menu = Arrays.asList( new Menu("햄버거").addMenuItems( //햄버거 메뉴들... ), new Menu("음료").addMenuItems( //음료 메뉴들... ), new Menu("사이드").addMenuItems( //음료 메뉴들... )); //출처 : withong님 github 코드 📌 Builder Pattern객체 생성 시 생성자..

Spring 기초 강의 수강을 마쳤다.방대한 내용을 흐름과 관계를 중심으로 이해하고 싶어 별도의 글로 작성하였다.아직 세부적으로 정리할 내용이 많이 남았지만 이렇게 정리하면서 각 요소들이 기억에 잘 남게 된 것 같다.https://devhippo.tistory.com/94 웹 서비스 구조 및 흐름을 비유와 함께 이해하기웹 서비스의 전체적인 구조와 관계, 흐름, 각 요소의 역할을 좀 더 쉽게 이해하고 떠올릴 수 있도록특정 상황에 비유해 정리하였다.일부 내용은 간략화를 위해 생략되었고 별도의 글에 자세히devhippo.tistory.com 📚 키오스크 프로젝트 피드백예외를 예외가 아닌 용도로 사용했기 때문에 아이디어는 좋았지만 적절한 방법은 아니라는 피드백을 받았다.내가 작성한 코드는 아래와 같은 과정으로..

웹 서비스의 전체적인 구조와 관계, 흐름, 각 요소의 역할을 좀 더 쉽게 이해하고 떠올릴 수 있도록특정 상황에 비유해 정리하였다.일부 내용은 간략화를 위해 생략되었고 별도의 글에 자세히 정리하였다.⚙️ Web Service웹을 통해 클라이언트와 서버가 HTTP 기반으로 데이터를 주고받으며 동작하는 서비스웹 서비스 구조는 우리가 일상 생활에서 흔히 볼 수 있는 가게 운영 시스템과 굉장히 유사하다.다만, 일하는 직원이 전자기기 또는 어떤 개념으로 대체될 뿐이다.📌클라이언트 - 서버 간 통신프로토콜에 따라 클라이언트와 서버를 연결하고 데이터를 전송한다. 서로 다른 공간에 있는 고객과 가게는 인터넷으로 연결 되어있다.IP는 데이터 패킷을 목적지까지 전달하는 배달기사다. IP 주소와 Port 번호(동호수 같은 ..

API애플리케이션이 서로 통신할 수 있도록 해주는 인터페이스이다.문서 양식이라고 생각하면 이해하기 쉽다.이렇게 요청서를 작성해서 넘겨주면 그에 따라서 필요한 걸 드릴게요!라고 양식에 대한 규칙과 명령어를 정의한 것이다.📌 REST (REpresentational State Transfer) = 자원의 표현에 의한 상태 전달자원(데이터)을 이름으로 구분, 해당 자원의 상태(데이터 요청 시점의 자원 상태)를 주고받는 모든 것을 의미한다.HTTP Method로 CRUD Operation을 적용하는 것을 Rest라 칭한다.🟩 구성 요소자원 : URI (URL + URN)표현 : 데이터를 주고 받는 형태, JSON, XML행위 : HTTP 프로토콜 MethodGET정보 요청POST정보 입력PUT정보 업데이트 ..

📌 HTTP ( HyperText Transfer Protocol )웹에서 데이터를 주고받기 위한 프로토콜요청과 응답을 주고받는다.✅ 무상태성(Stateless)서버는 클라이언트의 이전 요청 정보를 저장하지 않음이를 보완하기 위해 쿠키(Cookie) / 세션(Session) / 토큰(Token) 사용✅ 비연결성(Connectionless)클라이언트가 요청을 보내고 서버가 응답하면 연결이 바로 종료새로운 요청을 보낼 때마다 새로운 연결을 생성해야 함✅ 지속연결 ( Persistent Connection )비연결성을 개선한 방법으로 한 번의 TCP 연결로 모든 요청과 응답을 주고받은 후 연결을 종료함TCP 3-Way HandShake와 연결 종료 횟수 감소지연 시간이 감소네트워크 리소스를 절약Keep-Al..

인터넷상에서는 데이터를 안전하게 전달하기 위한 규칙이 있다.이를 전송 계층 프로토콜이라고 한다. 대표적인 전송 계층 프로토콜에는 TCP와 UDP가 있다.두 방법의 가장 큰 차이는 신뢰성을 고려하는 지의 여부이다.프로토콜TCPUDP신뢰성 고려3 Way HandShake로 신뢰성 있는 연결비신뢰성속도느림빠름공통점PORT가 존재한다📌 TCP ( Transmission Control Protocol )신뢰성 있는 데이터 전송을 보장하는 연결 지향형 프로토콜신뢰성 있는 데이터데이터를 송수신하기 전에 3 Way HandShake를 통해 연결을 설정한다.오류 처리손상된 패킷 감지 후 재전송한다.흐름 제어 및 혼잡 제어데이터가 올바르게 전송될 수 있도록 전송 속도 등을 조절한다. 📌 3 Way HandShake데이..

🖥️ 키오스크는 어떤 기능들이 있을까?우리가 식당에 가서 주문을 받을 때 제공받는 키오스크의 주요 기능을 생각해 보자.아래와 같이 정리해 볼 수 있을 것이다.👀 사용자에게 메뉴 정보를 제공한다.👆 사용자는 원하는 메뉴를 선택한다.🛒 선택한 메뉴를 장바구니에 저장한다.📈 주문 확인 및 메뉴의 옵션, 수량을 조정 또는 삭제한다.💸 총금액에 대해 선택한 결제 수단으로 결제한다. 🗂️ 기능에 따라 패키지 별로 구분하기메뉴 정보에 관련된 클래스를 domain 패키지에, 키오스크 기능에 관련된 클래스를 util 패키지에 배치했다.(Kiosk 내에 선언된 Menu를 Order 내에서 관리하고 싶었으나, 요구사항에 맞게 유지하기 위해서 따로 변경하지 않았다.)✏️ 결제 기능 구현🛒 장바구니..