티스토리 뷰
JAP에서의 연관관계& ERD의 연관관계(단방향)
- @OneToOne
- @OneToMany
- @ManyToOne
- @ManyToMany
JAP는 방향 설정이 필요
- 단방향 참조 : 한쪽의 클래스만이 다른 클래스의 인스턴스 참조
- 양방향 참조 : 양쪽 클래스 모두 다른 클래스의 인스턴스 참조
@Table(name = "t_member")
@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
public class MemberEntity {
@Id //Primary Key
String mid;
String mpassword;
String mname;
@Enumerated(EnumType.STRING) //기본은 순서 ordinal이 입력됨. Enum 문자타입
MemberRole mrole;
//USER, MANAGER, ADMIN 권한이 3개 뿐이라 Enum으로 만듦
}
@Table(name = "t_profile")
@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
public class ProfileEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) //자동으로 값 증가
long fno;
String fname;
boolean currentYn;
//여러개의 Profile이 하나의 Member의 소유이다.
@ManyToOne //하나의 member는 여러개의 Profile를 갖는다.
MemberEntity member; //참조
//칼럼 이름은 field이름_field
//member_mid칼럼이 생성된다.
}
양방향 처리
▶양방향 처리 - 연관관계 설정
①@OneToMany로 인해 중간 테이블이 생성된다.
(@JoinColumn를 사용하면 반대쪽에 칼럼이 추가되고 중간 테이블은 생기지 않는다)
②중간테이블을 생성하지않고 PK, FK를 지정하여 관계를 맺을 수 있다.
③PK쪽에서 mappedBy를 이용하여 자신이 다른 객체에 매여있음을 명시한다.
④“매여있다”게시글의 댓글이 존재한다면 게시글을 지울 수 없다의 의미이다.
⑤mappedBy 에는 참조한 쪽의 변수를 지정한다.
⑥tbl_free_replies 테이블에 board_bno칼럼이 추가된다.
⑦board의 댓글수를 가져오기위해 지연로딩을 즉시로딩으로 변경한다. (EAGER)
⑧지연로딩을 사용하는 경우는 연관관계 정보를 가져오기 위해 @Transactinal을 사용한다. (LAZY)
⑨양방향 설정을 사용하는 경우 ToString에 주의한다. (무한루프)
mappedBy
-
FetchType
LAZY, EAGER
LAZY인 경우 연관관계인 Entity는 조회하지 않는다.
System.out.println(board); 에서 오류남. ⇒ @Data(ToString포함되어있음)때문에
@ToString(exclude = {"files"})로 제거해주면 됨.
중간 테이블
@JoinColumn(조인칼럼)이 생략되면 중간테이블이 생성된다.
Join / Joinfetch
▶**양방향 처리 - @**Query 사용 ( JOIN ) N+1문제
▶**양방향 처리 - @**Query 사용 ( JOIN fetch ) N+1문제해결
'Spring Boot' 카테고리의 다른 글
JPA(Java Persistence API) (0) | 2024.08.21 |
---|---|
카카오맵API 키워드로 주소 찾기 오류 정리 (0) | 2024.08.12 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- slice
- Cleanup
- splice
- 노마드
- 카카오로그인
- TypeScript
- 재귀함수
- 프로젝트회고록
- 오버로딩
- ReactJS
- CLI
- 자바스크립트
- await
- create react app
- 프로그래머스
- 리액트
- 타입스크립트
- NPM
- props
- ts
- 챌린지1일차
- 티스토리챌린지
- nomard
- useEffect
- Async
- overloading
- React
- useState
- 오블완
- 리액트네이티브
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함