본문 바로가기

엔티티 매핑6

JPA의 관계 매핑: @OneToMany 와 @ManyToOne @OneToMany 와 @ManyToOne 어노테이션은 JPA 에서 엔티티 간의 관계를 매핑할 때 사용된다. @ManyToOne >> "다대일" 관계로, 많은(many) 측에서 사용된다. 데이터베이스에서 이 관계는 foreign key를 사용하여 구현된다. @JoinColumn 어노테이션과 함께 사용되어서 foreign key의 매핑을 지정한다. (ex: 여러 User 엔티티가 하나의 Department 엔티티에 속할 때, User 엔티티 내에 @ManyToOne 관계가 정의된다) @OneToMany >> "일대다" 관계로, 하나(one) 측에서 사용된다. 보통, 컬렉션이나 리스트 같은 컨테이너 타입과 함께 사용된다. 주로 조인 테이블을 사용해서 구현되며, @JoinColumn을 사용하여 매핑을 정의할 .. 2024. 3. 25.
JPA @Entity 어노테이션으로 엔티티 매핑하기 @Entity 는 JPA 에서 사용되는 주요 어노테이션 중 하나다. 특정 클래스가 엔티티임을 나타내고, 해당 클래스의 인스턴스가 데이터베이스에 저장되는 레코드와 연결될 것임을 명시한다. (@Entity 가 붙은 클래스는 데이터베이스 테이블의 한 행과 매핑된다는 뜻) 특징 >> @Entity 로 선언된 클래스는 JPA에 의해 데이터베이스의 테이블에 매핑된다. 클래스 이름은 기본적으로 테이블 이름으로 사용되지만, @Table 어노테이션을 사용하여 명시적으로 이름을 지정할 수 있다. 엔티티 클래스는 JPA 에 따라 public 이나 protected 기본 생성자를 가져야 한다. (JPA 가 클래스의 인스턴스를 만들 때 사용) 각 엔티티는 고유 식별자를 가져야 한다. @Id 어노테이션을 사용하여 필드에 표시한다.. 2024. 3. 25.
@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.