일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- github
- 자바
- 프로그래밍
- 프로그래밍기초
- 코딩초보
- 자바 스프링
- eclips
- 제이쉘
- spring
- 자바프로그래밍
- JAVA기초
- 자바기초
- Elk
- 컴퓨터과학개론
- 메소드
- 초보코딩
- 이클립스
- 기초코딩
- 배열
- Git
- 데이터베이스
- 스프링
- 스프링 기초
- 알고리즘
- JShell
- 초보코딩탈출
- 프로그래밍언어
- 리눅스
- Java
- 클래스
- Today
- Total
키보드워리어
[스프링]1:N 관계 ERR 다이어그램과 자바 코드로 표현 *카디널러티 본문
안녕하세요 【키보드 워리어】 블로그 방문자 여러분, 안경닦이입니다.
카디널러티에 대해 살펴볼게요
카디널리티(Cardinality)는 데이터베이스 용어로, 관계형 데이터베이스에서 테이블 간의 관계에서 한 쪽 테이블의 레코드 수와 다른 쪽 테이블의 레코드 수 사이의 관계를 나타냅니다. 즉, 카디널리티는 관계형 데이터베이스에서 테이블 간의 데이터 관계의 중요한 특성 중 하나입니다.
관계는 일대일 일대다 다대다 정도 입니다. 아래 그림을 살펴보죠.
위 그림은 Country 테이블과 City테이블은 1대 다 관계로 City 테이블은 FK(foreigner)로 country_id를 갖습니다.
카디널리티는 데이터베이스 설계 및 쿼리 작성에 중요한 영향을 미치며, 효율적인 데이터 관리와 데이터 무결성을 위해 고려되어야 합니다. 카디널리티는 테이블 간의 관계를 이해하고 데이터베이스를 효율적으로 구성하기 위해 중요한 개념입니다.
그리고 이를 자바 스프링 프레임워크를 통해 구현할 수 있는데요
Country 클래스부터 살펴볼게요.
@Entity
@Table(name = "country")
public class Country {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@OneToMany(mappedBy = "country", cascade = CascadeType.ALL)
private Set<City> cities;
// getters and setters 생략
}
@OneToMany 어노테이션은 일대다 관계를 설정할 때 사용됩니다. mappedBy 속성은 이 관계에서 엔티티 간 어떤 필드가 매핑되었는지를 지정합니다. 이 예시에서는 City 엔티티의 country 필드가 Country 엔티티의 cities 필드에 매핑된다는 것을 나타냅니다.
cascade 속성은 부모 엔티티가 저장되거나 삭제될 때 자식 엔티티에도 영향을 주는 옵션입니다. 이 예시에서는 CascadeType.ALL을 사용하여 부모 엔티티가 저장되거나 삭제될 때 자식 엔티티도 저장되거나 삭제되도록 설정되어 있습니다.
@Entity
@Table(name = "city")
public class City {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@ManyToOne
@JoinColumn(name = "country_id")
private Country country;
// getters and setters 생략
}
@GeneratedValue(strategy = GenerationType.IDENTITY)는 JPA에서 Entity 클래스의 PK(Primary Key)를 자동으로 생성하는 전략 중 하나입니다.
@JoinColumn은 @ManyToOne과 @OneToOne 어노테이션과 함께 사용되며, 연결 엔티티를 외부 테이블의 칼럼과 매핑하기 위해 사용됩니다.
참고하시면 좋은 글
2023.04.14 - [Spring framework] - [spring framework] @Entity와 @Component의 차이
'Spring framework > JPA' 카테고리의 다른 글
[스프링] 자동 생성일,수정일 만들기 (0) | 2023.04.25 |
---|---|
[스프링] @Entity와 @Component의 차이 (0) | 2023.04.14 |