728x90
ERD

- 도메인 모델과, ERD
- member - team 이 일대다 관계로 양방향 연관관계를 가지고 있다.
Entity
Member
@Entity
@Getter
@Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString(of = {"id","username","age"}) //양방향 연관관계는 출력 X
public class Member {
@Id
@GeneratedValue
@Column(name = "member_id")
private Long id;
private String username;
private int age;
@ManyToOne(fetch = FetchType.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.age = age;
this.username = username;
if(team != null)
changeTeam(team);
}
private void changeTeam(Team team) { //양방향 연관관계 Set
this.team = team;
team.getMembers().add(this);
}
}
Team

@SpringBootTest
@Transactional
class MemberTest {
@PersistenceContext
EntityManager em;
@Test
public void testEntity(){
Team teamA = new Team("teamA");
Team teamB = new Team("teamB");
em.persist(teamA);
em.persist(teamB);
Member member1 = new Member("Member1", 10,teamA);
Member member2 = new Member("Member2", 20,teamA);
Member member3 = new Member("Member3", 30,teamB);
Member member4 = new Member("Member4", 40,teamB);
em.persist(member1);
em.persist(member2);
em.persist(member3);
em.persist(member4);
em.flush();
em.clear();
List<Member> members = em.createQuery("select m from Member m",Member.class)
.getResultList();
for(Member member : members){
System.out.println("member = " + member);
System.out.println("->member.team = " + member.getTeam());
}
}
}
- Team, Member, Test를 작성한다.
728x90
'실전! Querydsl' 카테고리의 다른 글
| Ch02. 기본 문법 - 검색 조건 쿼리, 결과 조회 (0) | 2021.12.30 |
|---|---|
| Ch02. 기본 문법 - JPQL vs Querydsl, 기본 Q-Type 활용 (0) | 2021.12.30 |
| Ch01. 프로젝트 환경 설정 - H2 데이터베이스 설치, 스프링 부트 설정(JPA, DB) (0) | 2021.12.29 |
| Ch01. 프로젝트 환경 설정 - 라이브러리 살펴보기 (0) | 2021.12.29 |
| Ch01. 프로젝트 환경 설정 - Querydsl 설정과 검증 (0) | 2021.12.29 |