백엔드/JPA

·백엔드/JPA
안녕하세요. 이번 게시글에선 JPA 영속성 전이에 대해 분석해보고특히 복합키로 구성된 DB구조에서 어떻게 영속성 전이를 처리할지 알아보겠습니다.  “영속성 콘텍스트”는 무엇일까요?영속성 컨텍스트(Persistence Context)는 JPA에서 엔티티(Entity) 인스턴스를 관리하는 환경을 말합니다. 이 환경은 영속성을 관리하고 엔티티의 생명주기를 추적하는데 사용됩니다. “영속성”이라는 개념을 실현시키기 위해 어플리케이션 안에서 구체화된 것이 “영속성 컨텍스트”입니다.엔티티의 생명주기를 추적하고, 엔티티의 상태를 데이터베이스와 일치시키는 영속성을 관리하는 기술적 “환경“입니다.  어플리케이션 환경에서 구체적으로 표현해보면 위와 같이 그려볼 수 있습니다.정리하자면 영속성 컨텍스트는 크게 두가지 작업을 한..
·백엔드/JPA
궁금한 상황이 생겼다. ​ JPA 양방향 연관 관계 시, 연관 관계의 주인에서만 연관 관계 설정이 가능하다고 한다. ​ ​ 연관 관계 주인 엔티티(Member)에서 setter()로 관계 엔티티(Team)를 설정해주면 데이터베이스 테이블에선 외래키(TEAM_ID)가 입력되어, 그 외래키로 JOIN 하여 연관 관계를 매핑할 수 있다. -> "연관 관계 주인만이 DB 연관 관계와 매핑됨" ​ ​ @Entity @Getter public class Member { @Id @GeneratedValue private Long id; private String name; @ManyToOne private Team team; //연관관계설정 public void setTeam(Team team){ this.team ..
·백엔드/JPA
안녕하세요 ~ 린내입니다! 저번 게시글에선 복합키를 사용한 엔티티의 연관관계 조회 이슈까지 알아보았습니다. 부모엔티티와 자식 엔티티를 각각 insert 하고나서, 그래프 탐색을 통해 조회를 하려고 시도했는데, select문이 나가지 않거나 심지어 select문이 나갔는데도 조회결과가 없는 상황이 발생하였습니다. 왜 그런 것일까요? 저는 이 사항을 해결하기 위해 하이버네이트 영속성 컨텍스트와 1차 캐시에 대해 좀 더 이해할 필요가 있었습니다. 영속성 컨텍스트 및 1차 캐시 1차 캐시 1차 캐시는 영속성 컨텍스트에 위치한 메모리 공간 엔티티 저장 방식 영속성 컨텍스트에 엔티티 인스턴스가 보관되기 위해선 반드시 식별자 값이 필요합니다.. 아이덴티티, 시퀀스 PK전략에 따라, insert가 플러시 되는 시점이 ..
·백엔드/JPA
안녕하세요 ~ 린내입니다. 오늘은 식별관계 복합키인 DB 구조에서 JPA 사용 시 유의 사항들에 대해 알아보겠습니다. 식별관계 복합키 DB 구조는 주로 레거시 환경에서 볼 수가 있는데요. https://techblog.woowahan.com/2595/ 위의 프로젝트와 흡사한 경우를 맞닥뜨렸을 때에 일어날 수 있는 상황과 유의사항에 대해 정리해보겠습니다. 일단 식별관계 복합키로 부모 자식 엔티티를 만들어 보겠습니다. 위의 우아한 형제들 기술 블로그에서 언급해주셨던 것처럼 저도 @IdClass를 사용하는 것이 가독성이 더 좋고 사용하기 편리하다고 생각하여 식별관계 복합키의 엔티티 표현은 @EmbededId가 아닌 @IdClass를 사용하겠습니다.부모 엔티티 클래스 및 부모 ID 클래스 - “직원 정보”@En..
꾸준함의 미더덕
'백엔드/JPA' 카테고리의 글 목록