본문 바로가기

jpa16

@Embeddable, @Embedded : 객체 지향 JPA 모델링 @Embeddable 과 @Embedded 는 JPA 에서 복합 키나 임베디드 타입을 정의하는 데 사용된다. 객체 지향적인 방식으로 복잡한 데이터 구조를 데이터베이스에 매핑할 수 있게 해준다. (데이터 모델을 객체 지향적으로 설계하고, 중복을 줄이며, 복잡한 관계를 간단하게 표현할 수 있다) 그럼 각각에 대해 알아보자. @Embeddable : 클래스가 다른 엔티티에 내장될 수 있는 복합 값 타입임을 나타낸다. 이 어노테이션이 적용된 클래스는 자체적으로 데이터베이스 테이블을 갖지 않는다. 해당 클래스의 인스턴스는 다른 엔티티의 일부로서 사용된다. @Embeddable 클래스는 여러 엔티티에 재사용될 수 있으며, 엔티티의 일부 필드를 논리적으로 그룹화하는 데 유용하다. (쉽게 설명하면, 긴 코드를 구조적으.. 2024. 3. 24.
JPA에서 @Column 어노테이션 사용하는 법 @Column 은 JPA 에서 엔티티의 필드가 데이터베이스의 컬럼에 어떻게 매핑될지 세부적으로 지정하는 어노테이션이다. 해당 필드와 관련된 데이터베이스 컬럼의 이름, 길이, 널 허용 여부, 고유성 여부 등을 정의할 수 있다. 데이터베이스 컬럼과 엔티티 필드 사이의 매핑을 보다 세밀하게 제어할 때 유용하게 사용된다. name : 데이터 베이스 컬럼의 이름을 지정한다. (이 속성이 없으면, 필드 이름이 데이터베이스 컬럼 이름으로 사용된다) nullable : 컬럼이 null 을 허용할지 여부를 정한다. true 로 설정하면 null 을 허용하고, false 로 설정하면 널을 허용하지 않는다. unique : 컬럼의 값이 유일해야 하는지 여부를 정한다. true 로 설정하면 컬럼의 모든 값이 고유해야 한다. .. 2024. 3. 24.
JPA에서 Enum 처리하기: @Enumerated 와 EnumType @Enumerated 는 JPA에서 엔티티의 필드로 enum 타입을 사용할 때 이를 데이터베이스에 어떻게 저장할지 지정하는 어노테이션이다. Enum 타입은 상수를 정의하는 클래스로, JPA에서는 이런 enum 값을 데이터베이스에 어떤 형태로 저장할지 정해야 한다. EnumType.ORDINAL(기본값) : enum 상수의 순서(인덱스)가 데이터베이스에 정수로 저장된다. (enum이 '하나, 둘, 셋' 이라면, '하나'는 0, '둘' 은 1, '셋' 은 2로 저장된다.) (enum 상수의 순서가 바뀌면 데이터베이스에 저장된 값의 의미도 바뀔 수 있다. 그래서 정의한 후에 enum 상수의 순서를 가급적 변경하지 않는다) EnumType.STRING : enum 상수의 이름이 문자열로 데이터베이스에 저장된다... 2024. 3. 24.
JPA @Basic 어노테이션 사용법 @Basic 어노테이션은 JPA에서 엔티티의 필드나 속성이 데이터베이스의 기본 타입으로 매핑될 때 사용된다. JPA에서 모든 기본 타입(int, long, double 등)과 래퍼 타입(Integer, Long, Double 등), Stirng, Date 등의 타입들은 기본적으로 @Basic 매핑을 사용한다. 명시적으로 사용하지 않아도 필드가 기본적으로 이 어노테이션을 사용하는 것으로 간주된다. 그래서 특정 필드에 대한 로딩 전략이나 null 허용 여부 등을 명시적으로 지정하고자 할 때 @Basic 어노테이션을 사용하면 된다. @Basic 어노테이션은 fetch 속성을 가질 수 있으며, 해당 데이터를 어떻게 불러올지 지정할 수 있다. FetchType.LAZY 는 필요할 때만 데이터를 불러오는 지연 로딩.. 2024. 3. 24.