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
- ROLLBACK
- Amortized Analysis
- Flush
- 고아객체
- 지연로딩
- Spring
- 분할상환분석
- DB
- 즉시로딩
- 페치조인
- DiscriminatorValue
- Spring Data JPA
- 순수jpa
- Algorithm
- relational DB
- JPA
- relational database
- 플러시
- 영속성전이
- 관계형 데이터베이스
- 엔티티 매핑
- 정렬
- 영속성 컨텍스트
- commit
- 값타입
- DiscriminatorColumn
- n+1문제
- Embeddable
- fetch join
- MappedSuperclass
Archives
- Today
- Total
Jun's note
[JPA] 엔티티(Entity), 연관관계 매핑 본문
728x90
1. 엔티티 매핑 소개
- 객체와 테이블 매핑: @Entity, @Table
- 필드와 컬럼 매핑: @Column (엔티티 속성)
- 기본 키 매핑: @Id (식별자)
- 연관관계 매핑: @ManyToOne,@JoinColumn
위 어노테이션을 적어야 JPA가 관리할 수 있다. 잊지말고 적기!!
위에서 말한 4가지 엔티티 매핑에 대해 정리해본다.
2. 객체와 테이블 매핑
- @Entity
- JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수
- @Table
3. 필드와 컬럼 매핑
- @Column
- @Enumerated
- EnumType.STRING 사용하기!!! (EnumType.ORDINAL를 사용하면, 정의된 숫자로 저장되기 때문에 나중에 데이터끼리 혼란을 줄 수 있음, 그리고 ORDINAL이 기본값이기 때문에 무조건 STRING으로 설정해줘야한다.)
- @Temporal (날짜타입)
- TemporalType.DATE
- TemporalType.TIME
- TemporalType.TIMESTAMP
- @Lob
- @Transient
4. 기본 키 매핑
- @Id (식별자라고 명시)
- @GeneratedValue (값 자동 생성)
- IDENTITY : 데이터베이스에 위임(MYSQL)
- SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용(ORACLE)
- TABLE
- AUTO : 방언에 따라 자동 지정, 기본값
5. 연관관계 매핑
- 용어 이해
- 방향(Direction): 단방향, 양방향
- 다중성(Multiplicity): 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)
- 연관관계의 주인(Owner): 객체 양방향 연관관계는 관리 주인이 필요
- 테이블과 객체의 다른점
- 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다.
- 객체는 참조를 사용해서 연관된 객체를 찾는다.
- 방향
- 단방향 : 객체A만 객체B로 이동할 수 있고, B는 A로 이동하지 못한다.
- 양방향 : 서로가 이동할 수 있다.
- 연관관계의 주인과 mappedBy
- 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단 뱡향 관계 2개다. (테이블은 양방향, 객체는 단방향 2개)
- 규칙
- 연관관계의 주인만이 외래 키를 관리(등록, 수정)
- 주인이 아닌쪽은 읽기만 가능
- 주인은 외래키가 있는 쪽!!!!!!! (외래키는 N 즉 다)
- 양방향 설계시 주의!!!! 처음부터 양방향 설계 X, 단방향으로 설계한 후 필요하면 추가하는 식으로 구현하기
- 연관관계의 주인과 mappedBy
번외) 데이터베이스 스키마 자동 생성
- DDL이란? 테이블을 대상으로 CREATE, ALTER, DROP, TRUNCATE 를 수행하는 데이터 정의어다.
- 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성
- 주의!!!! 운영 장비에는 절대 create, create-drop, update 사용하면 안된다. (create: 애플리케이션을 새로 실행할때마다 기존에 있던 데이터 삭제하고 다시 테이블 생성)
참고
강의 : www.inflearn.com/course/ORM-JPA-Basic
서적 : <자바 ORM 표준 JPA프로그래밍> 김영한
'Programming > JPA' 카테고리의 다른 글
[JPA] 상속관계매핑, @MappedSuperclass (0) | 2022.01.14 |
---|---|
[JPA] 다양한 연관관계 매핑 (다대일, 일대다, 일대일, 다대다) (0) | 2022.01.13 |
[JPA] 영속성 컨텍스트 개념, 이점 (0) | 2022.01.13 |
[JPA] JPA 동작 과정과 장점 (0) | 2022.01.13 |
[JPA] JPA, ORM, Spring Data JPA 란? (0) | 2022.01.13 |
Comments