쿠오

📚 오늘의 공부

매일 자동으로 바뀌는 복습 6선 — Network · OS · Algorithm · Database 각 1편 + 랜덤 2편.

전체 글

Bean Validation 요청 검증

요청 검증(Bean Validation): @Valid, @Validated, 커스텀 제약

검증 코드를 if문으로 도배하던 시절 컨트롤러에서 요청을 받으면 “이름은 비었나? 이메일 형식 맞나? 나이는 음수 아닌가?”를 일일이 if로 검사했습니다. 검증 로직이 비즈니스 로직과 뒤섞이고 API마다 중복됐죠. Bean Validation(Jakarta Validation) 은 이걸 애너테이션으로 선언적으로 바꿔줍니다. 그런데 실무에서 “분명 ...

더보기 →
@Transactional 동작과 함정

@Transactional 동작 원리와 자주 빠지는 함정

“분명 @Transactional 붙였는데 롤백이 안 돼요” 트랜잭션은 @Transactional 한 줄이면 된다고 배우지만, 실무에선 “붙였는데 안 먹는다”를 자주 만납니다. 거의 전부 이 애너테이션이 어떻게 동작하는지를 모르면 못 피하는 함정입니다. 이 글의 목표는 하나입니다. @Transactional을 “DB를 묶어주는 마법”이 아니라 “T...

더보기 →
Spring Data JPA 기본기

Spring Data JPA 기본기: Repository와 쿼리 메서드

SQL을 한 줄도 안 썼는데 조회가 된다 Spring Data JPA를 처음 봤을 때 가장 신기했던 건, 인터페이스만 선언했는데 구현체 없이 동작한다는 점이었습니다. findByEmail이라고 메서드 이름만 지었더니 알아서 쿼리가 나가더라고요. 그런데 이 편리함을 “마법”으로 남겨두면, 실무에서 두 가지로 반드시 발목을 잡힙니다. (1) 분명히 값...

더보기 →