본문 바로가기
won2dev-log
HomeArchiveTagsCategoriesAboutProjects
HomeArchiveTagsCategoriesAboutProjects
won2dev-logwon2dev-logwon2dev-log

비전공 개발자의 로그 | won2dev-log

Navigation
  • Home
  • Archive
  • About
  • Projects
Categories
  • Docs
  • TIL
  • Automation
  • Git · GitHub
  • Project
Tags
  • TIL
  • Java
  • Spring
  • Backend
  • n8n
더보기
About

기록을 거름 삼아 공유는 성장을 만든다.

LicensePrivacy
© won2dev 2026. All rights reserved.
Home›Docs›예전엔 그냥 외웠다… 이번엔 진짜로 이해한 CRUD
Docs

예전엔 그냥 외웠다… 이번엔 진짜로 이해한 CRUD

won2dev·2025년 07월 08일
#Spring#DevNote

🔄 CRUD란 무엇일까?

📌 CRUD = Create, Read, Update, Delete

데이터를 생성하고, 읽고, 수정하고, 삭제하는 네 가지 기본 동작을 묶은 말이다.

이건 마치 우리가 블로그를 운영하면서 관리하는 것과 같다고 이해하면 쉽다.

간단하게, 블로그를 관리하는 상황으로 예를 들었다.

🗒️ 블로그 관리로 이해하는 CRUD

📍 상황

우리가 블로그를 운영한다고 생각해보자.

새 글을 작성하고, 작성된 글을 보고, 수정 및 삭제하는 과정이 모두 CRUD 이다.

단계설명실제 의미 (API 기준)
새 글 작성새로운 블로그 글을 작성함👉 Create (POST)
글 조회블로그 글을 읽고 확인함👉 Read (GET)
글 수정내용을 바꾸거나 제목을 고침👉 Update (PUT / PATCH)
글 삭제게시글을 블로그에서 삭제함👉 Delete (DELETE)

📑 CRUD와 API는 어떤 관계인가?

CRUD 동작은 REST API의 핵심 설계 원칙이다.

각 동작마다 HTTP 메서드를 연결하면 자연스럽게 API로 이어진다.

기능HTTP MethodURL 예시설명
CreatePOST/orders새로운 주문 등록
ReadGET/orders/1주문 상세 조회
UpdatePUT or PATCH/orders/1주문 내용 수정
DeleteDELETE/orders/1주문 삭제

이런 API 구조는 직관적이고 유지보수도 쉽고,

GET이면 조회, POST면 생성이라는 식으로 쉽게 이해할 수 있다.

🧪 직접 Postman으로 테스트한 일정 관리 예시

🔸 일정 등록 (Create)

plain text
POST /todos
Content-Type: application/json
POST /todos
Content-Type: application/json
json
{
  "title": "팀 프로젝트 준비",
  "content": "회의 자료 준비 및 발표 연습",
  "username": "홍길동",
  "memberId": 123
}
{
  "title": "팀 프로젝트 준비",
  "content": "회의 자료 준비 및 발표 연습",
  "username": "홍길동",
  "memberId": 123
}

📥 응답:

json
{
  "id": 1,
  "title": "팀 프로젝트 준비",
  "content": "회의 자료 준비 및 발표 연습",
  "username": "홍길동",
  "memberId": 123,
  "createdAt": "yyyy-mm-dd",
  "modifiedAt": "yyyy-mm-dd"
}
{
  "id": 1,
  "title": "팀 프로젝트 준비",
  "content": "회의 자료 준비 및 발표 연습",
  "username": "홍길동",
  "memberId": 123,
  "createdAt": "yyyy-mm-dd",
  "modifiedAt": "yyyy-mm-dd"
}

🔸 일정 조회 (Read)

plain text
GET /todos/1
GET /todos/1

📥 응답:

json
{
  "id": 1,
  "title": "팀 프로젝트 준비",
  "content": "회의 자료 준비 및 발표 연습",
  "username": "홍길동",
  "memberId": 123,
  "createdAt": "yyyy-mm-dd",
  "modifiedAt": "yyyy-mm-dd"
}
{
  "id": 1,
  "title": "팀 프로젝트 준비",
  "content": "회의 자료 준비 및 발표 연습",
  "username": "홍길동",
  "memberId": 123,
  "createdAt": "yyyy-mm-dd",
  "modifiedAt": "yyyy-mm-dd"
}

🔸 일정 수정 (Update)

plain text
PUT /todos/1
Content-Type: application/json
PUT /todos/1
Content-Type: application/json
json
{
  "title": "팀 프로젝트 준비 - 계획 변경",
  "content": "발표 중심으로 내용 수정",
  "memberId": 123
}
{
  "title": "팀 프로젝트 준비 - 계획 변경",
  "content": "발표 중심으로 내용 수정",
  "memberId": 123
}

📥 응답:

json
{
  "id": 1,
  "title": "팀 프로젝트 준비 - 계획 변경",
  "content": "발표 중심으로 내용 수정",
  "username": "홍길동",
  "memberId": 123,
  "createdAt": "yyyy-mm-dd",
  "modifiedAt": "yyyy-mm-dd"
}
{
  "id": 1,
  "title": "팀 프로젝트 준비 - 계획 변경",
  "content": "발표 중심으로 내용 수정",
  "username": "홍길동",
  "memberId": 123,
  "createdAt": "yyyy-mm-dd",
  "modifiedAt": "yyyy-mm-dd"
}

🔸 일정 삭제 (Delete)

plain text
DELETE /todos/1
DELETE /todos/1

📥 응답:

json
{
  "message": "삭제 완료"
}
{
  "message": "삭제 완료"
}

📘 예시 코드 (Spring)

java
@PostMapping("/todos")
public ResponseEntity<?> createTodo(@RequestBody TodoRequestDto dto) {
    // 일정 등록 로직
}

@GetMapping("/todos/{id}")
public ResponseEntity<TodoResponseDto> getTodo(@PathVariable Long id) {
    // 일정 조회 로직
}

@PutMapping("/todos/{id}")
public ResponseEntity<?> updateTodo(@PathVariable Long id, @RequestBody TodoRequestDto dto) {
    // 일정 수정 로직
}

@DeleteMapping("/todos/{id}")
public ResponseEntity<?> deleteTodo(@PathVariable Long id) {
    // 일정 삭제 로직
}
@PostMapping("/todos")
public ResponseEntity<?> createTodo(@RequestBody TodoRequestDto dto) {
    // 일정 등록 로직
}

@GetMapping("/todos/{id}")
public ResponseEntity<TodoResponseDto> getTodo(@PathVariable Long id) {
    // 일정 조회 로직
}

@PutMapping("/todos/{id}")
public ResponseEntity<?> updateTodo(@PathVariable Long id, @RequestBody TodoRequestDto dto) {
    // 일정 수정 로직
}

@DeleteMapping("/todos/{id}")
public ResponseEntity<?> deleteTodo(@PathVariable Long id) {
    // 일정 삭제 로직
}

✍️ 한 줄 마무리

처음엔 CRUD가 그냥 외워야 할 단어 같았는데,

이전에 했던 일정 관리 프로젝트를 다시 복습해보면서 흐름을 다시 정리하게 됐다.

이제 곧 최종 프로젝트를 앞두고 있어, 복습 차원에서 CRUD 개념을 다시 점검하면서 앞으로의 작업에 더 자신감이 생긴거같다..! 😹

CRUD는 아래 키워드만 기억하자

CRUD란?

👉 데이터를 만들고, 조회하고, 수정하고, 삭제하는 기본 동작

왜 중요한가?

👉 API 설계의 뼈대가 되고, 백엔드 개발의 기본 흐름이 되기 때문

추가로 기억할 것

👉 PUT은 전체 수정, PATCH는 필요한 부분만 수정할 때 사용!

공유하기
이전 글 TIL – HTTPS 인증서 적용 및 프론트·백엔드 연결 문제 해결다음 글 H2? 컵라면처럼 간편한 DB였다

목차

  • 🔄 CRUD란 무엇일까?
  • 📌 CRUD = Create, Read, Update, Delete
  • 🗒️ 블로그 관리로 이해하는 CRUD
  • 📍 상황
  • 📑 CRUD와 API는 어떤 관계인가?
  • 🧪 직접 Postman으로 테스트한 일정 관리 예시
  • 🔸 일정 등록 (Create)
  • 🔸 일정 조회 (Read)
  • 🔸 일정 수정 (Update)
  • 🔸 일정 삭제 (Delete)
  • 📘 예시 코드 (Spring)
  • ✍️ 한 줄 마무리

카테고리

Docs

태그

#Spring#DevNote

최근 글

Git 요약 (1) - Rebase, Stash, Squash MergeTIL - MSA 핵심 요소 정리TIL - (4) Spring 어노테이션 정리: Mockito를 활용한 단위 테스트TIL - (3) Spring 어노테이션 정리: Lombok Getter, Setter와 생성자TIL - (2) Spring MVC와 WebFlux의 차이: 블로킹과 논블로킹