본문 바로가기

전체 글14

JPA 프록시와 연관관계 관리 이 글은 2021년 5월에 작성되었으며 블로그를 이전하며 옮기게 되었습니다. 시작하기 앞서 저의 글에 대한 피드백이나 지적은 언제나 환영입니다 😊 들어가기 앞서 먼저 프록시란? :프록시(Proxy)란 '대리'라는 의미로, 네트워크 기술에서는 프로토콜에 있어서 대리 응답 등에서 친숙한 개념입니다. em.find()? em.getReference()? em.find() : 데이터베이스를 통해 실제 엔티티 객체 조회 em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시)엔티티 객체 조회 프록시 특징 실제 클래스를 상속받아서 만들어짐 실제 클래스와 겉모양이 같다 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 됨(이론상) 프록시 객체는 실제 객체의 참조(target.. 2022. 3. 25.
JPA 상속관계 매핑과 고급매핑 이 글은 2021년 5월에 작성되었으며 블로그를 이전하며 옮기게 되었습니다. 시작하기 앞서 저의 글에 대한 피드백이나 지적은 언제나 환영입니다 😊 상속관계 매핑 관계형 데이터베이스는 상속관계 X 슈퍼 타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 상속관계 매핑 : 객체의 상속과 DB의 슈퍼 타입 서브타입 관계를 매핑 슈퍼 타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 법 각각 테이블로 변환 -> 조인전략 통합 테이블로 변환 -> 조인 전략 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 @주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS .. 2022. 3. 25.
JPA 다양한 연관관계 매핑 이 글은 2021년 5월에 작성되었으며 블로그를 이전하며 옮기게 되었습니다. 시작하기 앞서 저의 글에 대한 피드백이나 지적은 언제나 환영입니다 😊 전 글에서 다뤘지만 한번 되짚고 넘어가자. 연관관계 매핑 시 고려사항 3가지 다중성 단방향, 양방향 연관관계의 주인 다중성 다대일(N:1) : @ManyToOne 일대다(1:N) : @OneToMany 일대일(1:1) : @OneToOne 다대다(N:M) : @ManyToMany 단방향, 양방향 테이블 외래 키 하나로 양쪽 조인 가능 사실 방향이라는 개념이 없다. 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 연관관계의 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺는다. 객체 양방향 관계는 A -> .. 2022. 3. 25.
JPA 연관관계 매핑과 연관관계 주인 이 글은 2021년 5월에 작성되었으며 블로그를 이전하며 옮기게 되었습니다. 시작하기 앞서 저의 글에 대한 피드백이나 지적은 언제나 환영입니다 😊 연관관계 매핑 용어를 먼저 이해해보자 방향(Direction) : 단방향, 양방향 다중성(Multiplicity) : 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 이해 연관관계의 주인(Owner) : 객체 양방향 연관관계는 관리 주인이 필요하다. 연관관계는 왜 필요해? "객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다." -조영호(객체지향의 사실과 오해) : 객체를 테이블에 맞추어 데이터 중심으로 모델링하면, 협력관계를 만들 수 없다. 테이블은 외래키로 조인을 사용하여 연관된 테이블을 찾는다. 객체는 참조를 사용해.. 2022. 3. 25.
JPA 영속성 컨텍스트란? 이 글은 2021년 5월에 작성되었으며 블로그를 이전하며 옮기게 되었습니다. 시작하기 앞서 저의 글에 대한 피드백이나 지적은 언제나 환영입니다 😊 영속성 컨텍스트란? 엔티티를 영구 저장하는 환경이라는 뜻 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 콘텍스트에 엔티티를 보관하고 관리한다. em.persist(member); 엔티티 매니저를 사용해 member(회원 엔티티)를 영속성 콘텍스트에 저장한다는 의미이다. 영속성 콘텍스트의 특징 엔티티 매니저를 생성할 때 하나 만들어진다. 엔티티 매니저를 통해 영속성 콘텍스트에 접근하고 관리할 수 있다. 엔티티의 생명주기 비영속 (new / tra.. 2022. 3. 25.
스프링 부트에서 스프링 빈의 중복 등록과 충돌? 스프링 부트에서 스프링 빈의 중복 등록과 충돌? 이 글은 2021년 4월에 작성되었으며 블로그를 이전하며 옮기게 되었습니다. 저의 글에대한 피드백이나 지적은 언제나 환영입니다 😊 먼저 간단하게 Bean을 알아보자 Bean은 Spring IoC Container가 관리하는 자바 객체, Spring Bean Container에 존재하는 객체를 말한다. 스프링 빈은 @Component 애노테이션을 이용하여 스프링이 자동으로 컨테이너에 빈을 등록해주는 방법이 있고 @Bean 애노테이션을 이용하여 직접 등록해주는 방법이 있다 간단하게 컨테이너를 알아보자 주입을 이용하여 객체를 관리하는 컨테이너이다. 컨테이너의 사전적 의미는 무언가를 담는 용기, 즉 그릇을 의미한다. 이를 통해 접근하자면 컨테이너는 객체 관리를 주.. 2022. 3. 25.