티스토리 뷰
안녕하세요
앞으로 여러가지 배우기위해 필요한 도메인을 만들어보겠습니다.
- Member.java
@Entity
@Getter @Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString(of = {"id", "username", "age"})
public class Member {
@Id @GeneratedValue
@Column(name = "member_id")
private Long id;
private String username;
private int age;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "team_id")
private Team team;
public Member(String username) {
this(username, 0);
}
public Member(String username, int age) {
this(username, age, null);
}
public Member(String username, int age, Team team) {
this.username = username;
this.age = age;
if (team != null) {
changeTeam(team);
}
}
public void changeTeam(Team team) {
this.team = team;
team.getMembers().add(this);
}
}
> Lombok 설명
`@Setter`: 실무에서 가급적 Setter는 사용하지 않기
`@NoArgsConstructor AccessLevel.PROTECTED`: 기본 생성자 막고 싶은데, JPA 스팩상 PROTECTED로 열어두어야 함
`@ToString`은 가급적 내부 필드만(연관관계 없는 필드만)
`changeTeam()` 으로 양방향 연관관계 한번에 처리(연관관계 편의 메소드)
- Team.java
@Entity
@Getter@Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString(of = {"id", "name"})
public class Team {
@Id @GeneratedValue
@Column(name = "team_id")
private Long id;
private String name;
@OneToMany(mappedBy = "team")
List<Member> members = new ArrayList<>();
public Team(String name) {
this.name = name;
}
}
Member와 Team은 양방향 연관관계, Member.team 이 연관관계의 주인,
Team.members 는 연관관계의 주인이 아님,
따라서 Member.team 이 데이터베이스 외래키 값을 변경, 반대편은 읽기만 가능
감사합니다.
참고
'Dev > Spring Data' 카테고리의 다른 글
[Querydsl] 6. Querydsl Where절 (0) | 2021.01.19 |
---|---|
[Querydsl] 5. JPQL vs Querydsl 비교 (0) | 2021.01.19 |
[Querydsl] 3. JPA yml 설정 (0) | 2021.01.19 |
[Querydsl] 2. H2 Database (0) | 2021.01.19 |
[Querydsl] 1. Querydsl 설정하기 (0) | 2021.01.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- @formula
- Security
- JPA
- FastAPI
- paawordencoder
- like절
- Spring
- Java
- booleanExpression
- 자바
- 유사결과
- mapstruct
- ubuntu
- ResourceHttpReqeustHandler
- springsecurity
- howtoinstallnginx
- 스프링부트 시작하기
- 스프링부트
- springboot
- 웹서비스
- 스프링
- 개발
- API
- spring web
- boot
- ControllerAdvice
- 스프링시큐리티
- java11
- Python
- QueryDSL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함