JPA ) 자바 ORM 표준 JPA 프로그래밍 - 4

GoRuth·2025년 4월 14일

JPA

목록 보기
4/8

1. @Entity

  • JPA를 사용해서 Table과 Mapping할 클래스는 필수로 붙여야 함

  • 속성

    • name
      • JPA에서 사용할 엔티티 이름
      • 설정하지 않으면 클래스 이름 그대로 사용
      • 다른 Package에 동일한 이름 존재하면 name속성을 통해 이름 지정 필요
  • 주의 사항

    • 기본 생성자는 필수
      -> JPA는 Entity 객체 생성 시, 기본 생성자 사용
    • final 클래스, enum, interface, inner 클래스에는 사용 ❌
    • 저장할 필드에 final 사용 ❌

2. @Table

  • Entity와 매핑할 Table을 지정
  • 속성
    • name
      • 매핑할 테이블 이름
      • 설정하지 않으면 엔티티 이름을 사용

3. DB Schema 자동생성

  • JPA는 DB Schema를 자동으로 생성하는 기능 지원

  • 클래스의 Mapping정보를 보면 어떤 Table에서 어떤 Column을 사용했는 지 알 수 있음
    -> JPA는 이 Mapping 정보와 DB 방언을 사용해서 DB Schema 생성

  • hibernate.hbm2ddl.auto 속성 추가로 사용 가능

    • create
      • 기존 Table 삭제 + 새로 생성
    • create-drop
      • create 속성 + Application 종료 시, DDL 제거
    • update
      • DB Table과 Entity Mapping 정보를 비교해서 변경 사항만 수정
    • validate
      • DB Table과 Entity Mapping 정보를 비교해서 차이가 있다면 경고 + 실행 X, DDL수정을 하지 않음
    • none
      • 자동 생성 기능 X

4. PK Mapping

  • 직접 할당 (Use -> @Id)
    • PK를 Application에서 직접 할당
    • 가능한 Type
      • 자바 기본형
      • 자바 Wrapper형
      • String 등등
    • entityManager.persist()로 Entity 저장 전 Application에서 직접 PK 할당
  • 자동 생성 (Use -> @Id, @GeneratedValue)
    • IDENTITY (주로 MySQL, PostgreSQL, SQL Server, DB2)
      • 기본 키 생성을 데이터베이스에 위임
      • DB에 값 저장 후 PK를 구할 수 있음
        -> JPA는 PK를 얻기 위해 DB를 추가로 조회해야 함! (쓰기 지연 동작 ❌)
    • SEQUENCE (오라클, PostgreSQL, DB2, H2)
      • 데이터베이스 시퀀스를 사용해서 기본 키를 할당
      • 유일한 값을 순서대로 생성하는 특별한 DB 오브젝트
        -> Sequence
      • 사용하기 위해서는 @SequenceGenerator로 Sequence를 Mapping해야 함
    • TABLE (ALL)
      • @TableGenerator로 키 생성 전용 테이블을 하나 만들고 여기에 이름과 값으로 사용할 컬럼을 만들어 데이터베이스 시퀀스를 흉내내는 전략
    • AUTO
      • 선택 DB 방언에 따라 IDENTITY, SEQUENCE, TABLE 전략 중 하나를 자동으로 선택
profile
Backend Developer

0개의 댓글