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
- 체인 패턴
- zipkin
- 생산자 소비자 패턴
- saga pattern
- Spring Boot Actuator
- Java
- Resilinece4j
- spring batch
- 사가 패턴
- 배치
- 키클락
- 스프링 배치
- JPA
- TypeScript
- The law of Demeter
- spring cloud
- Serial GC
- thread
- MSA
- 알고리즘
- 디자인 패턴
- Spring Cloud Netfilx Eureka
- Parallel Old GC
- 스레드
- 타입스크립트
- 멀티스레드
- Action Pattern
- 디자인패턴
- java 정렬
- Transaction Pattern
Archives
- Today
- Total
PSD( Private-Self-Development )
JPA 값 타입 본문
JPA 는 코드를 두 가지 타입으로 인식한다.
1. 엔티티 타입
- @Entitiy 정의한 객체
- 데이터가 변해도 추적 가능
2. 값 타입
- int, String 과 같이 자바 기본 타입 혹은 객체
- 테이터 변경 시 추적 불가
- 잘 사용 하면 객체 지향 적으로 좋다.
- 단, 여러 엔티티에서 공유하여 사용 할 경우, 문제 발생
- 복사 해서 사용하고, 불변 객체로 설계하자( 갯터만 생성하고 셋터는 생성하지 말자 )
- 비교 시 equals() 함수 오버라이딩 하여 사용하자
기본 생성 equals() 를 쓰는 것이 좋다. ( get, set 함수 사용하도록 : 프록시를 위함 )
값 타입 분류
1. 기본 값 타입
- 자바 기본 타입( int )
- 래퍼 클래스( Integer )
- String
2. 임베디드 값 타입( 복합 타입 )
- @Embeddable : 타입 정의 하는 곳
- @Embedded : 타입 사용 하는 곳
- @AttributeOverrides : 같은 임베디드 타입을 사용 해야 하는 엔티티의 경우 사용
3. 컬렉션 값 타입
- @ElementCollenction
- @CollectionTable( name, joinColumns )
- 기본적으로 지연로딩, 영속성 전이, 고아객체 제거의 기능을 갖는다.
- 식별자가 없기 때문에 값을 변경하면 추적이 어렵다.
- 컬렉션에 변경 사항이 발생하면 주인 엔티티와 연관된
모든 데이터를 삭제하고 현재 컬렉션 데이터로 넣는다. - 컬렉션 매핑 대상 테이블은 null X, 중복 저장 X
- 복잡한 경우 AddressEntity 와 같이 컬렉션 값 타입을 가지는 Entitiy 를 선언하여 사용하자.
참조 : https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
'Backend > JPA' 카테고리의 다른 글
JPA 조회 성능 최적화 (0) | 2022.12.01 |
---|---|
JPA 의 쿼리 작성 라이브러리 (0) | 2022.10.20 |
JPA 의 프록시, 지연 로딩, 즉시 로딩 (0) | 2022.10.12 |
JPA 의 상속 (0) | 2022.10.11 |
JPA의 DB 매핑 (0) | 2022.10.06 |