Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- jpa
- 오블완
- mapping
- Docker
- backend
- 개발자
- QueryDSL
- 백엔드
- codedeploy
- ec2
- MSA
- CICD
- rds
- goorm
- orm
- kakao
- s3
- 자격증
- 티스토리챌린지
- Spring Boot
- DynamoDB
- CodeCommit
- backenddeveloper
- sqs
- Redis
- codebuild
- serverless
- aws
- 스터디
- spring
Archives
- Today
- Total
gony-dev 님의 블로그
[JPA] 자바 ORM 표준 JPA 프로그래밍 - 엔티티 매핑 본문
- 매핑은 키 역할을 하는 데이터와 값 역할을 하는 데이터를 짝 지어 저장하는 데이터 구조를 의미한다.
- 그렇다면 매핑에는 어떤 유형이 존재할까?
객체와 테이블 매핑
- 객체와 테이블 매핑은 '@Entity'와 '@Table' 간의 연관관계를 의미한다.
- "@Entity"가 붙은 클래스는 JPA가 관리하고, "@Table"이 붙은 클래스는 엔티티와 매핑할 테이블을 지정하는 것을 의미한다.
- 컬럼 매핑 - "@Column"
- 기본 키 매핑 - "@Id"
- 연관관계 매핑 - "@ManyToOne", "@JoinColumn"
데이터 베이스 스키마 자동 생성
- 데이터베이스 스키마에는 여러 종류가 있다.
- create: 기존테이블 삭제 후 다시 생성
- create-drop: create와 같으나 종료시점에 테이블 drop
- update: 변경 사항만 반영
- validate: 엔티티와 테이블이 정상 매핑되었는지에 대한 여부만 확인한다.
- none: 사용하지 않는다.
- 주의할 점!
- 개발 초기 단계는 create나 update 사용을 권장한다.
- 테스트 서버는 update나 validate 사용을 권장한다.
- 스테이징과 운영 서버는 validate나 none을 권장한다.
필드와 컬럼 매핑
우선 필드에 사용하는 어노테이션을 정리해 보겠다.
- @Column: 컬럼 매핑
- @Temporal: 날짜 타입 매핑
- 날짜 타입을 매핑할 때 사용한다.
- 단, LocalDate, LocalDateTime을 사용할 때는 생략이 가능하다!
- @Emurated: enum 타입 매핑
- 해당 어노테이션을 사용 시 optional은 사용을 금지한다.(optional을 순서를 저장하기 때문이다.)
- Role이나 2개 이상 타입이 존재할 때 사용하는 것을 권장한다.
- EnumType.String: enum 이름을 String 형태로 데이터베이스로 저장한다.
- @Lob: BLOB, CLOB에 매핑
- @Transient: 특정 필드를 컬럼에 매핑한다.
기본키 매핑
기본 키(PK)는 엔티티에 저장되어 있는 인스턴스를 식별하기 위해 필요한 중요한 컬럼이다.
그래서 "@Id" 어노테이션을 사용하여 해당 컬럼이 기본 키라는 것을 지정해 준다.
- @Id: 직접 할당
- @GeneratedValue: 기본 키가 자동 생성되게끔 설정
- IDENTITY: 기본 키 생성을 DB에 위임하며, JPA는 보통 트랜잭션 커밋 시점에 INSERT SQL를 실행하여 저장한다.
- SEQUENCE: DB 시퀀스 오브젝트를 사용하며, ORACLE에서 사용한다.
- TABLE: 키 생성용 테이블을 사용한다.
- AUTO: 방언에 따라 자동 지정한다.
- 현재 많이 쓰이는 식별자 전략으로는 "Long형 필드 + 대체키 + 키" 생성전략을 사용하는 것이 최선이다!
'Spring > JPA' 카테고리의 다른 글
[JPA] 고급 매핑 (0) | 2024.11.10 |
---|---|
[JPA] 자바 ORM 표준 JPA 프로그래밍 - 다양한 매핑관계 (1) | 2024.09.04 |
[JPA] 자바 ORM 표준 JPA 프로그래밍 - 영속성 관리(플러시와 준영속 상태) (0) | 2024.08.12 |
[JPA] 자바 ORM 표준 JPA 프로그래밍 - 영속성 관리 (0) | 2024.08.08 |
[JPA] 자바 ORM 표준 JPA 프로그래밍 - JPA를 사용해야 하는 이유? (0) | 2024.07.29 |