[스프링 부트] 8. 테이블 생성

lhs's avatar
Nov 17, 2024
[스프링 부트] 8. 테이블 생성
 

1. application.properties

# 1. DB 생성 spring.datasource.driver-class-name=org.h2.Driver spring.datasource.url=jdbc:h2:mem:test spring.datasource.username=sa # 2. hibernate 세팅 (조건 : @Entity가 붙어있는 클래스만 찾아서 생성) spring.jpa.hibernate.ddl-auto=create spring.jpa.show-sql=true
  • DB 생성
    • spring.datasource.driver-class-name=org.h2.Driver : JDBC 드라이버 클래스를 설정
    • spring.datasource.url=jdbc:h2:mem:test : H2 인메모리 데이터베이스에 연결하기 위한 URL 설정(mem:test는 메모리 기반 데이터베이스 이름)
    • spring.datasource.username=sa : 데이터베이스 연결 시 사용할 사용자 이름을 설정
  • hibernate 설정
    • spring.jpa.hibernate.ddl-auto=create : Hibernate가 데이터베이스의 스키마를 어떻게 처리할지 설정
    • 옵션
      • none : DDL 자동 생성 안 함(기본값)
      • create : 애플리케이션 실행 시 테이블을 새로 생성(재시작 시 유지)
      • create-drop : 애플리케이션 실행 시 테이블을 생성하고 종료 시 삭제
      • update : 데이터베이스를 변경한 엔터티에 맞게 자동으로 테이블을 업데이트
      • validate : 엔티티와 데이터베이스의 테이블이 일치하는지 검증
    • spring.jpa.show-sql=true : Hibernate가 실행하는 SQL 쿼리를 콘솔에 출력할지 여부를 설정

2. Board

@NoArgsConstructor @Getter @Table(name = "board_tb") @Entity public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String title; private String content; private Timestamp createdAt; }
  • @NoArgsConstructor : 기본 생성자를 자동으로 생성해주는 롬복 어노테이션
    • JPA는 조회된 데이터(ResultSet)를 객체로 변환할 때 기본 생성자를 호출하여 객체를 생성한 후, 리플렉션을 통해 필드에 값을 채운다.
  • @Getter : 모든 필드에 대해 게터 메서드를 자동으로 생성해주는 롬복 어노테이션
  • @Table(name = "board_tb") : 해당 엔티티 클래스가 매핑될 테이블의 속성을 설정하는 JPA 어노테이션
    • _tb를 테이블 이름 뒤에 붙이는 컨벤션을 사용
  • @Entity : 이 클래스가 JPA 엔티티임을 나타내는 어노테이션
    • JPA가 해당 클래스를 테이블과 매핑하고, 자동으로 테이블을 생성
  • @Id : 테이블의 기본 키(primary key)를 설정하는 JPA 어노테이션
  • @GeneratedValue(strategy = GenerationType.IDENTITY) : 기본 키 생성을 데이터베이스에 위임하는 JPA 어노테이션
    • 옵션
      • GenerationType.AUTO : JPA 구현체가 적절한 기본 키 생성 전략을 자동으로 선택(기본값)
      • GenerationType.IDENTITY : 데이터베이스에서 자동 증가(AUTO_INCREMENT) 방식으로 기본 키를 생성
      • GenerationType.SEQUENCE : 데이터베이스 시퀀스를 사용하여 기본 키를 생성
      • GenerationType.TABLE : 별도의 테이블을 만들어 기본 키를 관리
    • H2 Database에서는 AUTO 전략을 사용할 경우 시퀀스 방식으로 동작할 수 있으므로, 자동 증가 방식을 원하면 GenerationType.IDENTITY를 사용해야 한다.
  • createdAt은 JPA에서 테이블을 생성할 때 created_at으로 변환된다.

3. 테이블 생성 확인

  • 웹 브라우저에서 http://localhost:8080/h2-console URL에 접속한다.
notion image
  • 올바른 데이터베이스 URL과 사용자 이름 입력한다.
    • JDBC URL : jdbc:h2:mem:test
    • User Name : sa
notion image
  • Connect 후 테이블을 조회해 테이블이 올바르게 생성되었는지 확인한다.
Share article

LHS's Study Space