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 |
Tags
- 커스텀 로그인
- vue.js
- forNmae()
- 도커빌드
- AWS
- 컴포넌트 주도
- 리덕스
- $emit()
- 트리 회전
- 애그리거트
- VUE
- 자료구조
- 오라클
- Express
- 리덕스 공식문서
- paraller
- EBS
- ACCESS_REFUSED
- 리액트
- 네임드 뷰
- react
- REDIS
- rabbitmq 에러
- 자바
- redux
- 오라클 병렬처리
- Java Reflextion API
- .getClass()
- quert
- exiting abnormally
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 |