Tag: 백엔드공부
All the articles with the tag "백엔드공부".
-
Spring Boot #4 — 트랜잭션 · 연관관계 · N+1 과 fetch join
엔티티를 @ManyToOne 으로 연결하고 전체 조회를 했더니 쿼리가 1번이 아니라 6번 나갔다. LAZY 로딩이 부른 N+1 문제를 fetch join 으로 잡고, @Transactional 의 원자성과 더티 체킹까지 정리한다.
-
Spring Boot #3 — JPA 로 PostgreSQL 연결 · 엔티티와 리포지토리로 CRUD
인메모리 List 로 하던 CRUD 를 실제 PostgreSQL 로 교체했다. build.gradle 의존성부터 application.properties, record 를 버리고 @Entity 로, JpaRepository 는 빈 인터페이스인데 CRUD 가 되는 이유, 그리고 컨트롤러를 한 줄도 안 바꾼 레이어 분리의 배당금까지.
-
PostgreSQL 기초 — CRUD와 한글 정렬(COLLATE) 함정
SQLite만 쓰다 PostgreSQL을 처음 잡았다. CREATE부터 CRUD 대응, 그리고 ORDER BY가 가나다 순으로 안 되던 collation 문제까지.
-
Spring Boot #2 — REST API 로 CRUD · 레이어드 아키텍처 · 전역 예외 처리기
Spring Boot #1 (첫 실행 · DI) 에 이어 #2 는 REST API 로 CRUD. REST 는 URL + HTTP 메서드의 조합이라는 정의부터 정리 (GET/POST/PUT/DELETE), 컨트롤러에 @GetMapping · @PostMapping · @PutMapping · @DeleteMapping 붙여서 todos CRUD 완성. curl 옵션 (-X 메서드 · -H 형식 · -d 데이터) 정리 및 5스텝 curl 흐름 검증 (생성 → 전체 조회 → 수정 → 삭제 → 최종 조회). 컨트롤러가 로직까지 다 들고 있으니 서비스로 분리 → 레이어드 아키텍처 (Controller = 요청/응답 / Service = 로직 / Repository = 저장). 예외 처리는 커스텀 예외 → 404 응답, 그리고 전역 예외 처리기 (Global Exception Handler) 를 두면 컨트롤러는 그냥 throw 만 하고 응답 매핑은 처리기가 담당 — 자바 #3 편에서 배운 "throw 는 강제 전파" 계약성이 실전으로 확장됨. 시행착오 2건 (참조 클래스 없이 서버 켜기 요청 · 라이브러리 추가 전 패키지 작성) 은 학습 지침에 반영해서 다음부터 재발 방지.