공유된 따라하기 · JPA
JPA 트랜잭션 실습 — 커밋과 롤백을 테스트로 확인하기
대상 PostgreSQL 제약조건 실습을 끝내고
categories/menus테이블 구조를 아는 사람. JPA 엔티티·리포지토리 기본 사용법을 알고 있다. JUnit은 잘 모른다.목표 트랜잭션 노트 두 편에서 배운 커밋·롤백 동작을 테스트 코드로 직접 실행해 확인한다.
완성물 Spring Boot 4.1.x + JDK 21 + PostgreSQL 환경에서
Category/Menu엔티티로 6개 시나리오 테스트를 모두 실행하고, 콘솔 출력을 통해 커밋/롤백 결과를 확인한 상태.
준비물
- JDK 21 설치
- PostgreSQL 서버 실행 중
- VSCode 설치
- Spring Boot 4.1.x (Initializr 생성 시 최신 버전 선택)
STEP 1 / 11Spring Boot 프로젝트 생성
0개 완료 · 11개 남음
Spring Boot 프로젝트를 생성하고,
application.yml에 PostgreSQL 연결 정보를 설정하며, 데이터베이스를 만든다.1-1. VSCode Initializr 스크린샷 10장
VSCode에서 Spring Initializr를 통해 프로젝트를 생성한다. 아래 스크린샷 순서대로 진행하면 된다.
File > New > File...또는Ctrl+N/Cmd+N- Spring Initializr 선택
- Project Metadata: Group
com.example, Artifactdemo - Project:
Gradle project - Language:
Java - Spring Boot:
4.1.x(최신 버전) - Dependencies:
Spring Data JPA,PostgreSQL Driver,Spring Web - Generate Project
- 프로젝트 폴더 열기
1-2.
application.yml설정src/main/resources/application.properties를 삭제하고,application.yml을 만든다.파일:
src/main/resources/application.ymlspring: datasource: url: jdbc:postgresql://localhost:5432/계정_db username: postgres password: your_password jpa: hibernate: ddl-auto: create-drop show-sql: true properties: hibernate: format_sql: trueWindows 와 Mac 에서 PostgreSQL 비밀번호가 다르면
password값을 자신의 비밀번호로 바꾼다.1-3. 데이터베이스 생성
PostgreSQL 에서
transaction_db데이터베이스를 만든다. postgresql 서버에 접속해서 다음 명령어를 입력한다.newlec@newlecture:~$ sudo -u postgres psql -c 'CREATE DATABASE "계정_db";' [sudo: authenticate] Password: CREATE DATABASE newlec@newlecture:~$ sudo -u postgres psql -d "계정_db" -c 'GRANT ALL ON SCHEMA public TO ncafe;' GRANT✅ 확인
src/main/resources/application.yml파일이 존재한다.src/main/resources/application.properties파일은 삭제되었다.- PostgreSQL 에서
transaction_db데이터베이스가 생성되었다.
🎓 newlec 쌤의 코멘트
ddl-auto: create-drop은 애플리케이션 시작 시 테이블을 만들고, 종료 시 삭제한다. 테스트 환경에서는 이 설정이 유용하다.show-sql: true는 실행되는 SQL 을 콘솔에 출력하므로, 트랜잭션의 커밋/롤백을 눈으로 확인할 수 있다.format_sql: true는 SQL 을 가독성 있게 포맷한다.❌ 자주 하는 실수
증상 원인 해결 Connection refusedPostgreSQL 서버가 실행되지 않음 PostgreSQL 서버를 시작한다. FATAL: database "transaction_db" does not exist데이터베이스 미생성 CREATE DATABASE transaction_db;실행password authentication failed비밀번호 오류 application.yml의password값을 확인한다.📝 이 단계의 핵심
application.yml은 Spring Boot 의 기본 설정 파일이다.ddl-auto: create-drop은 테스트 환경에서 테이블을 자동으로 관리한다.
이 주소는 글의 저작자가 공개한 링크입니다. 뉴렉처 스터디의 다른 자료는 로그인 후 볼 수 있어요.