프로그래밍공부(Programming Study)/JPA(Java Persistence API)4 1. 영속성 관리 1. 영속성 컨텍스트 논리적인 개념으로, 엔티티를 영구 저장하는 환경 엔티티매니저를 통해 영속성 컨텍스트에 접근 EntityManager.persist(entity) 영속성 컨텍스트를 통해 영구 저장하겠다 엔티티의 생명주기 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속(managed) : 영속성 컨텍스트에 관리되는 상태 준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제(removed) : 삭제된 상태 영속성 컨텍스트의 이점 1차 캐시 영속성 컨텍스트라고 이해해도 무방함 특정 트랜잭션 찰나의 순간에서만 이득이 있음 (데이터 베이스 트랜잭션 단위로 엔티티매니저를 만듦 ->트랜잭션 후 1차 캐시 날라감[고객 한 명의 비즈니스 로직용]) 동.. 프로그래밍공부(Programming Study)/JPA(Java Persistence API) 2022. 12. 28. 5. 값 타입 1. 기본값 타입 엔티티 타입(Entity Type) @Entity로 정의하는 객체 식별자로 지속해서 추적 가능 값 타입(Value Type) int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 분류 기본값 타입 자바 기본 타입(Primitive Type) - int, double 래퍼 클래스- Integer, Long String 임베디드 타입(embedded type, 복합 값 타입) 컬렉션 값 타입(collection value type) 기본값 타입 생명주기를 엔티티에 의존 값 타입은 공유하면 안됨 참고 자바의 기본 타입은 공유되지 않음 기본 타입은 항상 값을 복사함 Integer 같은 래퍼 클래스나 String .. 프로그래밍공부(Programming Study)/JPA(Java Persistence API) 2022. 12. 28. 4. 프록시와 연관관계 정리 1. 프록시 em.getReference() : 데이터베이스 조회를 미루는 가짜 엔티티 객체 조회 처음 사용할 때 한 번만 초기화 실제 클래스를 상속 받아서 만들어짐 실제 클래스와 겉 모양이 같음 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 됨 -> == 비교 시에 true 실제 객체의 참조(target)을 보관 프록시 객체 호출 시 실제 객체의 메소드 호출 주의사항 프록시 객체는 원본 엔티티를 상속 받기 때문에 ==비교가 아닌 instance of 사용 (실무에서 많이 발생)영속성 컨텍스트의 도움을 받을 수 없는 준영속 상태(close/detach/clear)일 때, 프록시 초기화 시 문제 발생 -> 하이버네이트는 org.hibernate.LazyInitializationE.. 프로그래밍공부(Programming Study)/JPA(Java Persistence API) 2022. 12. 28. JPA 공부 개요 JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑(Object Relational Mapping) 영속성 컨텍스트 목차 영속성 관리(https://chaaany.tistory.com/229) 엔티티 매핑 연관관계 매핑 프록시와 연관관계 정리(https://chaaany.tistory.com/227) 값 타입(https://chaaany.tistory.com/228) 객체지향 쿼리 언어 문법 쿼리 메소드 기능 명세 Query By Example Projections 네이티브 쿼리 프로그래밍공부(Programming Study)/JPA(Java Persistence API) 2022. 12. 28. 이전 1 다음 728x90