JPA_ DB 엔티티 / JPA 어노테이션

김지영·2024년 3월 19일

jpa

목록 보기
2/18

1. JPA 란?

: JPA의 기본기능은 SQL을 자동 생성 해주는 기본함수를 제공해줌

  • 복잡한 기능은 SQL 직접 작성할 수 있는 기능을 제공
  • 불완전 하기 때문에 실무에서는 Querydsl 라이브러리 도움을 받음

(참고)vs MyMabatis : 직접 개발자가 모든 SQL 를 작성
-> 작성시 가독성이 높음


2. JPA 어노테이션

(1) 클래스에 붙이는 어노테이션

★ 전부 클래스에 붙임!

@Entity

  • JPA 프레임워크 사용시 기능을 대상 클래스에 부여하는 어노테이션
  • 대상 클래스를 참고하여 DB에 물리 테이블을 생성함
  • JP 사용시 항상 젤 위에 작성해줌

@Table(name = "테이블명")

  • JPA DDL (테이블, 인덱스 등 생성) 생성기능 사용시 그 이름으로 DB에 생성해주는 어노테이션
  • 테이블명 지정한 이름으로 생성됨

③ @SequenceGenerator

  • 오라클 DB 제품의 시퀀스를 JPA에서 사용하기 위한 어노테이션
  • Oracle DB 시퀀스 생성시 사용할 속성들
  • 클래스 위에 붙여줌

-사용법

@SequenceGenerator(
        name = "시퀀스_제너레이터이름"
        , sequenceName = "DB 시퀀스명"
        , initialValue = 초기값 (시퀀스 처음값)
        , allocationSize = 할당값(JPA 공간에서 생성될 값) // 보통 1 사용
)

④ @DynamicInsert (옵션)

  • 옵션 기능 : JPA 에서 insert SQL 자동 생성시 null 값이 들어오는 컬럼을 제외하고 SQL 생성해주는 어노테이션
    예) insert into dept(dno, dname, loc)
    values(1,2, null);
    => insert into dept(dno, dname)
    values(1,2); // 이렇게 바뀜(null 에러 방지)

⑤ @DynamicUpdate (옵션)

  • 옵션 기능임, JPA 에서 update SQL 자동 생성시
    null 값 들어오는 컬럼은 제외하고 sql 작성해주는 어노테이션

⑥ 기타

  • 롬북 어노테이션 : 상황에 따라 추가 (setter, getter, 생성자, tostring 등)

(2) 속성(필드)에 붙이는 어노테이션

① @Id (필수!)

  • 속성(필드) 기본키를 정의하는 어노테이션이며 필수임!

② @GeneratedValue

@GeneratedValue(strategy = GenerationType.SEQUENCE
, generator = "시퀀스_제너레이터이름"
: 시퀀스를 어느 속성(필드)에 연결할 것인가를 지시하는 어노테이션
보통 기본키 컬럼(속성)에 사용함

③ @Column(columnDefinition = "DB컬럼자료형")

  • 생략가능, JPA 의 ddl(테이블,인덱스등) 생성기능을 사용한다면 DB 테이블을 만들때 지시된 자료형으로 생성함
profile
그냥 졍이라구하자

0개의 댓글