@JoinColumn 어노테이션은 JPA에서 사용되며, 엔티티의 필드가 다른 엔티티에 대한 외래 키(foreign key)를 나타낼 때 사용된다.
엔티티 간의 관계를 매핑할 때 주로 사용된다.
(@ManyToOne 이나 @OneToOne 관계에서 자주 볼 수 있다)
속성 >>
name : 데이터베이스 컬럼의 이름을 지정한다.(foreign key 컬럼의 이름이 된다)
referencedColumnName : 참조하는 테이블의 컬럼 이름을 지정한다. (기본값은 참조된 테이블의 기본 키)
foreignKey : foreign key 제약 조건을 직접 지정할 때 사용한다.
unique : 이 속성을 true 로 설정하면 foreign key 컬럼에 대한 유니크 제약 조건을 설정한다(같은 값을 가진 foreign key가 중복되지 않도록 한다)
nullable : true 로 설정하면 foreign key 컬럼을 nullable 로 만든다.(해당 열에 null 값을 허용한다)
insertable : 필드가 데이터베이스에 삽입될 수 있는지 제어한다. (기본값은 true: 해당 필드는 엔티티를 데이터베이스에 추가할 때 데이터베이스 테이블의 컬럼으로 삽입된다)
false로 설정하면 해당 필드의 값이 데이터베이스에 삽입되지 않는다.(읽기 전용 필드로 만들 수 있음)
updatable : 필드가 데이터베이스에서 업데이트될 수 있는지 제어한다. (기본값은 true: 해당 필드는 엔티티를 업데이트할 때 데이터베이스 테이블의 컬럼으로 업데이트된다)
false 로 설정하면 해당 필드의 값이 데이터베이스에서 업데이트되지 않는다.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne
@JoinColumn(name = "department_id", referencedColumnName = "id")
private Department department;
}
@Entity
public class Department {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
@JoinColumn(name = "department_id", referencedColumnName = "id") :
@JoinColumn 어노테이션은 User 엔티티의 department 필드가 Department 엔티티의 id 필드를 참조하는 foreign key 관계를 설정한다.
name 속성은 데이터베이스 테이블에서 사용할 외래 키 컬럼의 이름을 지정한다.
referencedColumnName 속성은 참조하는 엔티티의 기본 키 컬럼을 지정한다.
---
24년 1월 11일에 작성된 글입니다
'JAVA > SpringBoot' 카테고리의 다른 글
JPA의 관계 매핑: @OneToMany 와 @ManyToOne (0) | 2024.03.25 |
---|---|
JPA @Entity 어노테이션으로 엔티티 매핑하기 (0) | 2024.03.25 |
JPA @MappedSuperclass: 공통 필드와 메소드 재사용으로 코드 중복 줄이기 (0) | 2024.03.24 |
Lombok 의 @Data 어노테이션 : Java 코드 간단하게 만들기 (0) | 2024.03.24 |
@Embeddable, @Embedded : 객체 지향 JPA 모델링 (0) | 2024.03.24 |