JPA 3

[JPA] 기본 키 매핑, 컬럼 매핑

기본 키 매핑기본 키를 할당하는 방식은 두 가지입니다.직접 할당자동 할당기본 키 직접 할당기본키로 지정하고싶은 필드에 @Id를 붙여줍니다. @Id@Column(name = "ID")private int id; @Id 적용 가능 타입 :자바 기본형Wrapper 타입Stringjava.util.Datejava.sql.Datejava.math.BigDecimaljava.math.BigInteger @Id 필드에 개발자가 직접 값을 할당해야 합니다. 그런데 영속성 컨텍스트는 엔티티를 식별자값으로 관리하기 때문에 식별자 값이 할당되어야 영속성 컨텍스트의 관리를 받을 수 있습니다. 식별자 값이 없는 상태로 em.persist하면 예외가 발생하는데, 어떤 예외가 발생하는지는 jpa 표준에 정의되어있지 않습니다. 하이..

JPA 2024.10.05

[JPA] 지연 로딩

JPA는 데이터를 조회할 때 즉시 로딩(EAGER)와 지연 로딩(LAZY) 두 가지 방식을 사용합니다. 간단히 설명하면 즉시 로딩은 데이터를 조회할 때 연관된 데이터까지 한 번에 불러오는 것이고, 지연 로딩은 필요한 시점에 연관된 데이터를 불러오는 것입니다. Fetch TypeFetch Type이란 JPA가 엔티티를 조회할 때 연관관계에 있는 객체들을 어떻게 가져올 것이냐를 나타내는 설정값입니다. JPA를 사용하면 엔티티 조회가 발생할 때 JPA가 알아서 JPQL을 이용해 쿼리문을 생성합니다. 이때 객체와 필드를 보고 쿼리를 생성하는데, 만약 @ManyToOne 또는 @OneToMany와 같이 다른 객체와 연관관계 매핑이 되어있으면 그 객체들까지 조회하게 됩니다. 이때 이 객체를 어떻게 불러올 것인지 @..

JPA 2024.09.12

[JPA] 엔티티 매핑 / 데이터베이스 스키마 자동 생성 기능 (ddl-auto)

JPA는 엔티티 객체와 DB 테이블을 연결해서 개발자가 직접 쿼리를 쓰지 않고 메서드로 간단하게 데이터베이스에 접근할 수 있게 해줍니다. 그런데 어떤 엔티티 객체와 DB 테이블이 대응되는지는 개발자가 직접 어노테이션을 붙여서 JPA에게 알려줘야 합니다. 이번 포스팅에서는 JPA에서 엔티티를 매핑할 때 자주 쓰이는 어노테이션에 대해 알아보겠습니다. @Entity@Table(name="MEMBER")public class Member { ...@Entity테이블과 매칭될 클래스실제로 DB 테이블과 연결되기 때문에, 내용이 DB 테이블과 다르면 안 됨.name : jpa에서 사용할 엔티티 이름 지정. 디폴트값은 클래스 이름인데, 보통 클래스 이름을 사용함. 다른 패키지에 이름이 같은 엔티티 클래스가 있다..

JPA 2024.09.11