Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- redux
- 자료구조
- 애그리거트
- Express
- 도커빌드
- Java Reflextion API
- VUE
- 네임드 뷰
- 자바
- exiting abnormally
- paraller
- ACCESS_REFUSED
- 오라클
- 리덕스 공식문서
- 컴포넌트 주도
- quert
- EBS
- 리액트
- 오라클 병렬처리
- .getClass()
- react
- REDIS
- rabbitmq 에러
- forNmae()
- vue.js
- 트리 회전
- 리덕스
- 커스텀 로그인
- AWS
- $emit()
Archives
- Today
- Total
개발정리
JPA-일대일 매핑 본문
@Data
@Entity
@Table
public class Member {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long member_id;
@Column(name = "name")
private String name;
@OneToOne
@JoinColumn(name = "card_id")
private MemberCard card;
public void setMemberCard(MemberCard card) {
this.card=card;
card.setMember(this);
}
}
@Entity
@Data
@Table(name = "MEMBER_CARD" )
public class MemberCard {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long card_id;
@Column(name = "dept_name")
private String dept;
@OneToOne(mappedBy = "card")
private Member member;
}
일대일 연관매핑도 일대다 매핑과 거의 비슷합니다.
@OneToOne 어노테이션을 사용합니다.
DB에 저장된 결과를 보면 다음과 같습니다.
여기서 문제가 일대일 매핑이면 외래키인 card_id를 기본키로 사용해도 되지 않을까요?
그때 사용하는 어노테이션이 @MapsId입니다.
@Data
@Entity
@Table
public class Member {
@Id
private Long member_id;
@Column(name = "name")
private String name;
@MapsId
@OneToOne
@JoinColumn(name = "card_id")
private MemberCard card;
public void setMemberCard(MemberCard card) {
this.card=card;
card.setMember(this);
}
}
다음과 같이 Member 클래스에 @MapsId 어노테이션을 붙이면
member테이블의 컬럼이 하나 줄어들고 외래키인 card_id를 기본키로 사용하게 됩니다.
참조:JPA 퀵스타트
'스프링 > JPA' 카테고리의 다른 글
JPA-다대다 매핑 (0) | 2023.09.02 |
---|---|
JPA-다대일 연관관계 매핑 (0) | 2023.08.31 |
JPA-영속 컨텍스트 (0) | 2023.08.30 |
JPA-설정 (0) | 2023.08.29 |