공유된 따라하기 · 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개 남음

  1. Spring Boot 프로젝트를 생성하고, application.yml 에 PostgreSQL 연결 정보를 설정하며, 데이터베이스를 만든다.

    1-1. VSCode Initializr 스크린샷 10장

    VSCode에서 Spring Initializr를 통해 프로젝트를 생성한다. 아래 스크린샷 순서대로 진행하면 된다.

    1. File > New > File... 또는 Ctrl+N / Cmd+N
    2. Spring Initializr 선택
    3. Project Metadata: Group com.example, Artifact demo
    4. Project: Gradle project
    5. Language: Java
    6. Spring Boot: 4.1.x (최신 버전)
    7. Dependencies: Spring Data JPA, PostgreSQL Driver, Spring Web
    8. Generate Project
    9. 프로젝트 폴더 열기

    1-2. application.yml 설정

    src/main/resources/application.properties 를 삭제하고, application.yml 을 만든다.

    파일: src/main/resources/application.yml

    spring:
      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: true

    Windows 와 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 refused PostgreSQL 서버가 실행되지 않음 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 은 테스트 환경에서 테이블을 자동으로 관리한다.

이 주소는 글의 저작자가 공개한 링크입니다. 뉴렉처 스터디의 다른 자료는 로그인 후 볼 수 있어요.