PSD( Private-Self-Development )

JPA 값 타입 본문

Backend/JPA

JPA 값 타입

chjysm 2022. 10. 14. 16:22

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

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com

'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