Java 객체/ 기본값 타입의 특징

2021. 6. 30. 17:28·개발중/Java Persistence API (JPA)
728x90
반응형

Java 객체/ 기본값 타입의 특징

 

엔티티 타입( Entity Type ) 의 특징

  • 식별자가 있다.
    • @id
    • 엔티티 타입은 식별자가 있고, 식별자로 구분 할 수 있다.
  • 생명 주기가 있다.
    • 생성하고, 영속화 하고, 소멸하는 생명 주기가 있다.
  • em.persist( entity ) 로 영속화 한다.
  • em.remove( entity ) 로 제거한다.
  • 공유 할 수 있다.
    • 참조 값을 공유할 수 있다. 이것을 공유 참조라고 한다.
    • 예를 들어 회원 엔티티가 있다면 다른 엔티티에서 얼마든지 회원 엔티티를 참조할 수 있다.

 

값 타입 ( Value Type ) 의 특징

  • 식별자가 없다.
  • 생명 주기를 엔티티에 의존한다.
    • 스스로 생명주기를 가지지 않고 엔티티에 의존한다. 의존하는 엔티티를 제거하면 같이 제거 된다.
  • 공유하지 않는 것이 안전하다.
    • 엔티티 타입과는 다르게 공유하지 않는 것이 안전하다. 대신에 값을 복사해서 사용해야 한다.
    • 오직 하나의 주인만이 관리해야 한다.
    • 불변 객체로 만드는 것이 안전하다.

 

값 타입은 정말 값 타입이라 판단 될 때만 사용해야 한다.

특히 엔티티와 값 타입을 혼동해서 엔티티 값 타입으로 만들면 안된다.

 

식별자가 필요하고 지속해서 값을 추적하고 구분하고 변경해야 한다면 그것은 값 타입이 아닌 엔티티다.


 

728x90
반응형
저작자표시 (새창열림)

'개발중 > Java Persistence API (JPA)' 카테고리의 다른 글

🟡 JPQL 이란 ?  (0) 2021.07.01
객체 지향 쿼리 소개  (0) 2021.07.01
JPA - 값 타입 컬렉션  (0) 2021.06.30
JPA - 즉시 로딩과 지연 로딩  (0) 2021.06.28
JPA / 프록시 알아보기  (0) 2021.06.28
'개발중/Java Persistence API (JPA)' 카테고리의 다른 글
  • 🟡 JPQL 이란 ?
  • 객체 지향 쿼리 소개
  • JPA - 값 타입 컬렉션
  • JPA - 즉시 로딩과 지연 로딩
Binsoo
Binsoo
내 트러블 슈팅
  • Binsoo
    정수빈 기술블로그임.
    Binsoo
  • 전체
    오늘
    어제
    • 빈수 개발자 개발 일기 (948)
      • 개발중 (635)
        • Spring Boot (95)
        • Spring Security (2)
        • Spring Batch (6)
        • Spring Boot & Redis (13)
        • Java Persistence API (JPA) (28)
        • Web (42)
        • Rest Api (7)
        • Spring Concurrency Control (3)
        • Redis (8)
        • Kubernetes (k8s) (4)
        • MYSQL (35)
        • AirFlow (15)
        • Docker (2)
        • Git (22)
        • Linux (9)
        • JSON Web Tokens (JWT) (4)
        • Troubleshooting (88)
        • Swagger (0)
        • Vue.js (52)
        • Java (74)
        • html (12)
        • C (5)
        • jQuery (15)
        • JavaServer Pages (JSP) (17)
        • Arduino (1)
        • JavaScript (35)
        • Amazon Web Services (AWS) (11)
        • Algorithm (9)
        • 참고 기능 (18)
        • mongo (2)
      • PROJECT (27)
        • 스프링부트+JPA+몽고 API 개발 (3)
        • MINI (2)
        • 게시판 (3)
        • vue 프로젝트 (1)
        • JPA 사이드 프로젝트 기록 (17)
      • TEAM STUDY (156)
        • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (8)
        • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (12)
        • NAVER DEVELOPER (4)
        • LINUX (23)
        • PYTHON (19)
        • SERVER (8)
        • 알고리즘 코딩 테스트 스터디 (31)
        • 쿠버네티스 (40)
        • 대세는 쿠버네티스 [초급~중급] (11)
      • BOOK (0)
      • 자격증 (61)
        • 리눅스 1급 - 필기 기록 (19)
        • 네트워크 관리사 (2)
        • 네트워크 관리사 2급 - 실기 기록 (21)
        • 네트워크 관리사 2급 - 필기 기록 (16)
        • 정보처리 (2)
      • 직장인 대학원 (27)
        • 기록 (3)
        • 캐글 스터디 (3)
        • R (12)
        • MLOps (9)
      • 논문 (5)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    네트워크 관리사 2급 실기
    git
    네트워크 관리사
    jpa
    redis
    네트워크 관리사 2급
    REST API
    파이썬
    리눅스 마스터 1급 정리
    네트워크 관리사 요약
    Git 저장소
    java
    리눅스 1급 요약
    리눅스 마스터
    리눅스 마스터 1급
    스프링
    docker
    네트워크 관리사 학점
    리눅스 마스터 요약
    네트워크 관리사 실기
    리눅스 마스터 1급 요약
    Spring
    BackendDevelopment
    파이썬 알고리즘
    쿠버네티스 스터디
    VUE
    쿠버네티스
    springboot
    네트워크 관리사 자격증
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Binsoo
Java 객체/ 기본값 타입의 특징
상단으로

티스토리툴바