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