개발
Day 47 - Validation
·2분 읽기
이 글은 2026년 05월 08일 작성된 글입니다.
오늘은 Spring MVC 폼 처리와 Validation, MySQL 전환과 트랜잭션 흐름까지 정리했다.
1. 폼 = URL 생성기
폼은 사용자가 복잡한 URL을 쉽게 만들 수 있도록 도와준다.
<form action="/posts/doWrite">2. 글 작성 폼 구현
엔드포인트:
/posts/write폼 전송:
/posts/doWrite3. GET 대신 POST 사용
<form method="POST">GET은 조회, POST는 생성 목적에 더 적합하다.
4. HTTP 메소드
| 메소드 | 역할 |
|---|---|
| GET | 조회 |
| POST | 생성 |
| PUT | 수정 |
| DELETE | 삭제 |
5. 멱등성
같은 요청을 여러 번 보내도 결과가 같으면 멱등성이 있다고 한다.
- GET → 보통 멱등성 O
- POST → 보통 멱등성 X
6. Validation 도입
implementation("org.springframework.boot:spring-boot-starter-validation")7. 선언적 유효성 검사
@NotBlank
@Size(min = 2)
private String title;if문 대신 어노테이션 기반으로 검증 가능하다.
8. @ModelAttribute
@ModelAttribute WriteForm form폼 데이터를 객체로 자동 바인딩한다.
9. @Valid
public String doWrite(@Valid WriteForm form)폼 객체 검증 자동 수행.
10. BindingResult
public String doWrite(
@Valid WriteForm form,
BindingResult bindingResult
)검증 실패 후 흐름을 직접 제어할 수 있다.
11. MarkdownService 도입
@Service
public class MarkdownService {
}Markdown 관련 로직을 서비스 계층으로 분리했다.
12. MySQL 전환
spring:
datasource:
url: jdbc:mysql://localhost:3306/db_dev개발 환경 DB를 H2에서 MySQL로 변경했다.
13. Docker 기반 MySQL 실행
docker run --name mysql-1 -p 3306:3306 -d mysql14. @Transactional
@Transactional
public void delete() {
}여러 DB 작업을 하나의 트랜잭션으로 묶는다.
15. HikariCP autocommit
spring.datasource.hikari.autocommit: false불필요한 autocommit 쿼리를 줄일 수 있다.
✅ 정리
- Spring Validation을 사용하면 선언적으로 유효성 검사를 처리할 수 있다.
- BindingResult를 이용하면 검증 실패 이후 흐름을 직접 제어할 수 있다.
- MySQL과 Docker를 통해 실제 서비스와 비슷한 개발 환경을 구성할 수 있었다.
- @Transactional은 여러 DB 작업을 하나의 단위로 처리하는 핵심 기능이다.