Home
D.Yong Blog
Cancel

즉시로딩과 지연로딩 그리고 프록시

회원 엔티티와 팀 엔티티 회원 엔티티와 팀 엔티티가 있다고 가정해보자. 둘은 다음과 같은 관계가 있다. 회원은 하나의 팀에 소속될 수 있다. 하나의 팀은 다수의 회원을 포함하고 있다. 이 경우 회원을 조회한다고 했을 때 팀 엔티티도 함께 조회하는 것이 좋을까? 아니면 회원 엔티티만을 조회하는 것이 좋을까? @Entity @Getter ...

@MappedSuperclass

@MappedSupperclass 이전 포스팅에서 상속 관계 매핑에 대해서 알아보았다. 상속관계 매핑은 부모 클래스와 자식 클래스를 모두 데이터베이스 테이블과 매핑하였는데 부모 클래스는 테이블과 매핑하지 않고 부모 클래스를 상속받는 자식 클래스에게 매핑 정보만 제공할 때 사용하는 것이 @MappedSupperclass 이다. 회원(Member)과...

상속관계 매핑

상속관계 매핑 이번 포스팅에서는 상속관계 매핑에 대해서 알아보자. 우선 객체지향 프로그래밍에서 상속이란 객체들 간의 관계를 구축하는 방법으로 객체(서브 클래스)가 다른 객체(슈퍼 클래스)의 속성과 동작을 상속받아 사용하는 것을 말한다. 관계형 데이터베이스에는 이러한 객체지향 언어에서 다루는 상속이라는 개념이 존재하지 않는다. 대신 슈퍼타입 서브타입...

양방향 연관관계

양방향 연관관계 양방향 연관관계는 이전 게시글에서 다룬 단방향 연관관계와 다르게 Member에서 Team으로의 접근 뿐만 아니라 Team에서도 Member에 접근할 수 있는 이름 그대로 양방향에서 매핑이 가능한 것을 말한다. 객체 연관관계를 살펴보면 member는 하나의 team을 가질 수 있다. 반대로 team은 여러 member를 가질 수 있...

단방향 연관관계

단방향 연관관계 단방향 연관관계는 1 : N(1대다)인 경우를 말한다. 이 경우는 한 쪽의 엔티티가 관계를 맺은 엔티티 쪽의 여러 객체를 가질 수 있다는 것을 의미한다. 팀은 다수의 회원을 포함하고 있다. 하나의 주문에는 다수의 주문상품이 포함된다. 상위 카테고리는 다수의 하위 카테고리를 가지고 있다. 테이블 연관관계 테이블은 외래 ...

필드와 컬럼 캐핑

필드와 컬럼 매핑 @Column 엔티티 클래스의 필드와 데이터베이스의 컬럼을 매핑하기 위해 JPA에서는 @Column 어노테이션을 지원한다. @Column 어노테이션은 가장 많이 사용되고 기능도 많지만 name, nullable이 주로 사용되고 나머지는 잘 사용되지 않는 편이다. 속성 기능 기본값 ...

기본 키 매핑

기본 키 매핑 기본 키 매핑은 @Id 어노테이션을 사용하여 테이블의 기본키와 매핑시키는 것이다. 테이블에 새로운 데이터를 생성하기 위해서는 기본 키가 필수적으로 필요하게 되고 JPA는 이러한 기본 키를 생성하기 위한 몇가지 전략을 제공한다. 직접할당: 기본 키를 애플리케이션에서 직접 할당 자동생성: 대리 키 사용 방식 I...

엔티티 매핑

엔티티 매핑 JPA를 사용함에 있어 가장 중요한 것은 엔티티와 테이블을 매핑하는 것이다. JPA는 다양한 매핑 어노테이션을 지원하고 크게 4가지로 분류할 수 있다. 객체와 테이블 매핑: @Entity, @Table 기본 키 매핑: @Id 필드와 컬럼 매핑: @Column 연관관계 매핑: @ManyToOne, @JoinColumn, @...

병합(Merge)

병합 준영속 상태의 엔티티를 다시 영속 상태로 변경하려면 병합을 사용하면 된다. merge() 메소드는 준영속 상태의 엔티티를 받아서 그 정보로 새로운 영속 상태의 엔티티를 반환한다. 준영속 병합 예제 public class ExamMerge { static EntityManagerFactory emf = Persistence.createEn...

준영속 상태

준영속 상태 영속성 컨테스트가 관리하는 영속 상태의 엔티티가 영속성 컨텍스트에서 분리된(detached) 것을 준영속 상태라 한다. 따라서 준영속 상태가 된 엔티티는 영속성 컨텍스트가 제공하는 기능을 사용할 수 없게된다. 준영속 상태 만들기 영속 상태의 엔티티를 준영속 상태로 만드는 방법은 크게 3가지가 있다. em.detach(entity):...