스프링 부트의 기본기로 만든 회원가입 / 로그인 / 게시글 CRUD 예제입니다.
- Spring Boot 3.3 (Java 21)
- Spring MVC + Thymeleaf (화면)
- Spring Data JPA + MySQL (CRUD)
- HttpSession 로그인 (Spring Security 미사용 — 원리 학습용)
프로젝트 폴더에서:
# Windows 명령 프롬프트(cmd) / PowerShell
mvnw.cmd spring-boot:run
# Git Bash 등
./mvnw spring-boot:run처음 실행 시 Maven과 라이브러리를 자동으로 내려받느라 시간이 좀 걸립니다.
- MySQL 서버가 켜져 있어야 합니다.
application.properties의spring.datasource.password에 본인 MySQL root 비밀번호를 입력하세요.boardDB는createDatabaseIfNotExist=true옵션으로 자동 생성되니 직접 만들 필요는 없습니다. (수동으로 만들려면:CREATE DATABASE board DEFAULT CHARACTER SET utf8mb4;)
그 다음 브라우저에서 접속: http://localhost:8080
MySQL은 파일에 영구 저장되므로 서버를 꺼도 데이터가 남습니다. 테이블/데이터는 MySQL Workbench나
mysqlCLI에서USE board; SELECT * FROM member;로 확인할 수 있어요.
/signup회원가입 →/login로그인- 로그인하면
/posts/new에서 글쓰기 가능 - 글 제목 클릭 → 상세 보기 → 본인 글이면 수정/삭제 가능
BoardApplication.java— 시작점domain/— DB 테이블이 되는 클래스 (Member, Post)repository/— DB 접근 (JpaRepository 상속만으로 CRUD 제공)web/MemberController.java— 로그인/세션web/PostController.java— CRUD의 핵심 (이 파일이 제일 중요)templates/— 화면(HTML)
| 동작 | 메서드 | 주소 | SQL |
|---|---|---|---|
| Create | create() |
POST /posts |
INSERT |
| Read(목록) | list() |
GET /posts |
SELECT |
| Read(상세) | detail() |
GET /posts/{id} |
SELECT |
| Update | update() |
POST /posts/{id}/edit |
UPDATE |
| Delete | delete() |
POST /posts/{id}/delete |
DELETE |
콘솔에 찍히는 show-sql 로그를 보면 JPA가 위 SQL을 실제로 날리는 걸 확인할 수 있어요.