티스토리 뷰

JPA의 장점

  • 객체에 적절한 책임을 할당하는 객체지향적 개발이 가능하다.
  • 새로운 필드가 추가될 때마다 쿼리를 수정해야 하는 문제가 발생하지 않는다.

 

생성 방식

  • create: 기존 테이블 삭제 후 다시 생성 (개발)
  • create-drop: create와 같으나 종료 시점에 테이블 drop (개발)
  • update: 변경된 부분만 반영 (테스트, 개발)
  • validate: entity와 table이 정상 매핑되었는지만 확인 (테스트, 운영)
  • none: 사용하지 않음 (스테이징, 운영)

 

데이터베이스 스키마 생성 방식 설정

// application.properties
spring.jpa.hibernate.ddl-auto={생성_방식}

 

스키마 자동 생성을 위한 Entity class 작성법

@Entity // (1)
@Table(name = "station") // (2)
public class Station {
    @Id // (3)
    @GeneratedValue(strategy = GenerationType.IDENTITY) // (4)
    private Long id;

    @Column(name = "name", nullable = false) // (5)
    private String name;
    
    protected Station() { // (6)
    }
}
  1. @Entity : entity 클래스임을 지정
  2. @Table : 아무 설정을 하지 않으면 entity 이름과 같은 테이블이 기본으로 생성되며, 생성하기 원하는 테이블 이름을 지정할 수 있다. (생략 가능)
  3. @Id : Primary key 지정
  4. @GeneratedValue : PK 생성 규칙
  5. @Column : 테이블의 컬럼 이름을 지정하거나 속성을 지정할 수 있다. (생략 가능)
  6. 매개변수가 없는 생성자 : 매개변수가 없는 생성자를 반드시 선언해야 한다.

 

콘솔에서 JPA가 자동 생성하는 쿼리 보는 방법

spring.jpa.show-sql=true    // SQL 보기
spring.jpa.properties.hibernate.format_sql=true    // indent된 SQL 표시

 

Repository 선언 방법

interface StationRepository extends JpaRepository<Station, Long> { // (1)
    Station findByName(String name); // (2)
}
  1. interface에 JpaRepository<entitiy 이름, PK 데이터 타입>을 상속
  2. 메소드 이름으로 쿼리를 생성
댓글
Total
Today
Yesterday
링크
Apple 2023 맥북 프로 14 M3, 스페이스 그레이, M3 8코어, 10코어 GPU, 512GB, 8GB, 한글