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 공간에서 생성될 값)
)
④ @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 테이블을 만들때 지시된 자료형으로 생성함