[TIL] Omit, Clean URL, Query String, Tuple, POJO, VO,…

2025-04-19 TIL

📝 TIL (Today I Learned)
🔗 원본 이슈: #44
📅 작성일: 2025-04-19
🔄 최종 수정: 2025년 05월 02일


🍀 새롭게 배운 것

1. Omit

  • 뜻: 무언가를 제외하다, 빼다는 의미
  • 개발에서는? TypeScript나 Java 등에서 객체를 다룰 때, 특정 필드만 제외한 새 타입이나 새 객체를 만들 때 사용
  • 예시 (JavaScript/TypeScript):
    type User = { id: number; name: string; password: string };
    type PublicUser = Omit<User, "password">;
    

    PublicUserUser에서 password만 빠진 타입이다.

  • Java에서는 TypeScript처럼 Omit기능이 직접 있지는 않음.
    • 하지만 “DTO를 따로 만들어서 필요한 필드만 남기는 방식”으로 비슷하게 사용
    • 즉, Java에서 Omit이란 “필요없는 필드를 빼고 새 클래스를 만드는 것”으로 해석함

정리:
특정 속성을 빼고 다루는 것을 “Omit”이라고 한다.


2. Clean URL (Path Variable)

  • : 주소(URL)을 깔끔하게, 의미 있게 만든 것.
  • 개발에서는?
    리소스(데이터) 식별을 URL 경로로 표현하는 걸 말한다.
    (파라미터를 경로에 깔끔하게 넣는다.)

  • 예시:
    GET /users/123
    

    123번 사용자를 조회하는 요청 (Path Variable = 123)

정리:
/detail?id=123처럼 지저분하게 하지 않고, /detail/123처럼
리소스를 주소 안에 자연스럽게 표현하는 게 Clean URL


3. Query String (Search Parameter)

  • : ? 뒤에 붙는 키-값 쌍.
  • 개발에서는?
    데이터 검색, 필터링, 옵션 설정 등에 주로 사용.
  • 예시:
    GET /products?category=shoes&sort=price
    

    카테고리=신발, 가격순 정렬이라는 의미.

정리:
검색조건이나 옵션을 전달할 때
?key=value&key2=value2처럼 붙이는 게 Query String


4. HTTP Header + JWT

  • HTTP Header:

    • 요청(Request)이나 응답(Response)의 추가 정보를 담는 곳.
    • 예: 인증 정보, 요청 포맷, 토큰 등.
  • JWT (JSON Web Token):
    • 로그인한 사용자인지 증명하는 토큰.
    • Header + Payload + Signature로 구성된다.
    • 보통 HTTP Header 안에 넣어서 서버에 보냄.
  • 예시:
    Authorization: Bearer eyJhbGciOiJIUzI1...
    

    → 요청 헤더에 JWT를 담아 보낸다.

정리:
JWT는 로그인 토큰이고,
HTTP Header에 넣어서 서버에 인증정보를 전달한다.


5. Tuple, POJO, VO, Instance

  • Tuple:
    • 여러 데이터(타입 다를 수 있음)를 고정된 순서로 묶은 것.
    • 주로 TypeScript, Python 등에서 사용.
    • 예: (1, "apple")
  • POJO (Plain Old Java Object):
    • 특별한 규칙 없이, 그냥 순수한 Java 객체.
    • @Entity, @Component 이런 거 없는 심플한 객체를 말함.
  • VO (Value Object):
    • “값” 자체를 의미하는 객체.
    • 이름이 같으면 같은 것으로 취급하고, 변하지 않는(immutable) 게 일반적이다.
    • 예: Money, Address
  • Instance:
    • 클래스로부터 실제로 만들어진 메모리 상의 객체.
    • 예: new User("sungwoo") → User 인스턴스

정리:
| 용어 | 설명 | |:—-|:—-| | Tuple | 서로 다른 타입을 순서대로 묶은 데이터 | | POJO | 아무것도 특별하지 않은 순수 Java 객체 | | VO | 값(변하지 않는 의미 단위) 중심의 객체 | | Instance | 클래스로 실제 생성한 객체 |


6. Soft Delete

  • : 데이터를 진짜로 삭제하지 않고, 삭제된 것처럼 표시만 하는 것.
  • 개발에서는? DB에 is_deleted 같은 컬럼을 만들어서, 삭제 대신 플래그만 켠다.

  • 예시 (MySQL 테이블):
    UPDATE users SET is_deleted = true WHERE id = 123;
    

    → 실제로는 데이터가 남아있지만, 조회할 때는 is_deleted = false인 것만 보여준다.

정리:
Soft Delete = 삭제 표시만 하고 실제 데이터는 남겨두는 것
(복구하거나 기록을 남길 때 유용)


🔥 한 줄 요약

“Omit은 빼는 것, Clean URL은 경로 깔끔하게, Query String은 검색 옵션, JWT는 Header에 인증 토큰, POJO/VO/Instance는 객체 용어 구분, Soft Delete는 삭제 안 하고 표시만!”