Entity
JPA에게 관리를 맡길 객체.
@Entity로 객체를 수식해준다
@Entity
class Member {
public Member() {
}
}
이때 주의해야할 점은 해당 객체는 파라미터가 없는 기본 생성자가 있어야 한다는 것이다.
JPA는 리플렉션 기능을 이용해 인스턴스를 동적으로 생성하기 때문에 필요하다는데
리플렉션이 C#에만 있는줄 알았는데 Java에도 있어서 신기했다
Java Annotation에는 속성을 줄 수 있는데
Entity Annotation에서 사용하는 속성은 아래와 같다.
- name : JPA에서 사용할 Entity name, 이름이 같은 클래스를 사용해야 하는 문제를 해결하기 위함
- Table : Entity와 매핑할 Table 지정
- name : Table 이름
- uniqueConstraints : DDL(CRUD) 생성시에 유니크한 제약 생성
Entity Mapping Annotation
- @Column : Column 매핑
- @Temporal : 날짜,시간 매핑
- Java 8 이상부터는 사용하지 않음
- @Enumerated : enum 타입 매핑
- 조심해야 할 점은 default mapping 방법이 ORDINAL(순서) 이기 때문에 꼭 String(이름)으로 명시해주어야 함
- @Lob : BLOB, CLOB 매핑
- CLOB : 엄청 나게 긴 문자열
- BLOB : 나머지
- @Transient : DB에 매핑 하지 않을 필드 수식
- DB에 저장되지 않으며 메모리에만 남아있다
기본 키 Mapping
- @Id : 직접 Id 매핑, 내가 Id를 설정해준다. 하나의 Entity에는 꼭 있어야 함
- @GenerateValue : Id 자동 생성
- IDENTITY : DB에게 알아서 하도록 한다 ex) MySQL - AUTO_INCREMENT
- JPA는 INSERT Query를 날리기 전에는 Id 값을 모르므로(DB가 알아서 하므로)
이 정책만 예외적으로 persist 했을 때 트랜잭션을 commit하지 않아도
INSERT Query를 날려서 Id 값을 받아온다
- JPA는 INSERT Query를 날리기 전에는 Id 값을 모르므로(DB가 알아서 하므로)
- SEQUENCE : 시퀀스 오브젝트를 이용해 Id를 뽑아낸다 ex) Oracle
- AUTO : Dialect에 따라 자동 지정, 기본값임
- IDENTITY : DB에게 알아서 하도록 한다 ex) MySQL - AUTO_INCREMENT
기본 키를 설정할 때 주의할 점은 다음과 같다.
- 유일해야 함
- Not Null
- 변하면 안된다
- 대체키 ex)UUID 를 이용하자
DDL
JPA는 애플리케이션 실행 시에 DDL을 자동으로 생성해주는 기능이 있다.
DDL은 데이터베이스 스키마 정도로 이해하면 된다
실제 라이브 서비스에서는 실수를 미연에 방지하고자 다음과 같은 옵션을 절대 사용하지 않는다
테스트 서버나 로컬에서만 사용하자!
출처 : https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의
JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런
www.inflearn.com
'Back-End > JPA' 카테고리의 다른 글
[JPA] 6. 프록시와 Cascade 및 고아 객체 (0) | 2022.08.04 |
---|---|
[JPA] 5. 상속관계 Mapping & Mapped Superclass (0) | 2022.08.03 |
[JPA] 4. Entity간의 연관관계 Mapping (0) | 2022.07.30 |
[JPA] 2. Persistent에 대한 이해 (0) | 2022.07.20 |
[JPA] 1. JPA에 대한 이해 (0) | 2022.07.20 |