본문 바로가기

ORM7

[JPA] JPA 다양한 연관관계 매핑 - 일대다 관계(1:N) 일대 다(1:N) 관계 JPA가 지원하는 연관관계 매핑중 일대 다 관계의 단방향, 양방향 특징과, 매핑 방법, 장단점에 대해 공부해 보려고 한다. 다(N)보다 일(1)쪽에 비즈니스 로직의 비중이 높거나 중요도가 높은 경우 고려할 수 있는 관계이다. 일대 다 관계에서는 일(1) 쪽인 TEAM의 members 프로퍼티와 MEMBER테이블의 MEMBER_ID를 매핑해 Team 엔티티의 members 프로퍼티에서 외래키를 관리한다. 특징 일(1)이 되는 쪽이 연관관계의 주인이 된다. 테이블 관계는 항상 다(N) 쪽에 외래키가 있다. 객체와 테이블의 페러다임 불일치로 인해 반대편 테이블의 외래 키를 관리한다. 일대 다 단방향, 일대 다 양방향 관계가 있지만 표준에서는 단방향만 지원한다. @JoinColumn 사용.. 2024. 1. 14.
[JPA] 영속성 컨텍스트의 이점 - 동일성 보장 동일성 보장 영속성 컨텍스트의 이점 두번째는 영속 엔티티의 동일성을 보장해 준다는 것. 동일성 보장을 공부하기에 앞서 동일성에 대해 알아보자. 동일성 동일성이란 서로 다른 두 객체 인스턴스가 완전히 같은 값을 갖는 경우를 의미한다. 변수가 참조하는 두 객체의 주소값이 같기 때문에 사실상 하나의 객체로 봐도 무방하다. 두 객체가 동일한지는 '==' 연산자를 통해 판별할 수 있다. 동일성 보장 예제 Member member1 = em.find(Member.class, 1L); Member member2 = em.find(Member.class, 1L); System.out.println("member 1 == member2? " + (member1 == member2)); tx.commit(); 결과 Hib.. 2024. 1. 10.
[JPA] 영속성 컨텍스트의 이점 - 1차 캐시 영속성 컨텍스트의 이점 JPA에서 가장 중요한 개념인 영속성 컨텍스트! 영속성 컨텍스트의 가장 중요한 특징은 1차 캐시이다. EntityManager.persist()를 통해 영속성 컨텍스트 관리를 받는 엔티티는 1차 캐시라는 Map 형태의 저장 공간에 저장된다. 이때 key는 pk(primary key), value는 엔티티 객체 (=member) 가된다. 1차 캐시 동작 흐름 1. em.persist() : 영속성 부여 (1차 캐시 저장) 2. em.find() : 1차 캐시에서 primaryKey로 member 객체 조회 *2-2. 1차 캐시 조회 시 객체가 없는경우 DB에 접근해서 조회 2-3. DB에 조회한 값을 1차 캐시에 저장. 2-4. 반환. 3. tx.commit() -> 트랜잭션 커밋... 2024. 1. 10.
[JPA] 엔티티의 생명주기 - 영속, 비영속, 준영속, 삭제 엔티티생명주기 JPA 엔티티의 생명주기에 대해 알아보자. 엔티티 생명주기에는 영속, 비영속, 준영속, 삭제 총 4가지 상태가 있다. 비영속 (new/transient) 영속성 컨텍스트와 관계 없는 새로운 상태를 말한다. 즉, 영속성 컨텍스트 관리되기 이전의 상태. 영문 표기는 transient 인데 '일시적인' 이라는 뜻이 있다. 데이터베이스 영속성이 부여되기 전인 일시적인 상태를 의미한다. ====================== member.getId() = 1 ====================== Hibernate: /* insert jpashop.jpashop.domain.Member */ insert into Member (city, USERNAME, street, TEAM_ID, zipco.. 2024. 1. 10.