[๐Ÿ’ก] ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘

์„œ์€๊ฒฝยท2022๋…„ 12์›” 7์ผ
0

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
29/43

์ž˜ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ์ •๋ฆฌํ•ด๋ณด๋Š” ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘

ํ…Œ์ด๋ธ”์€ ์™ธ๋ž˜ํ‚ค ๊ฐ’ ํ•˜๋‚˜๋กœ ์–‘๋ฐฉํ–ฅ ํ…Œ์ด๋ธ” ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ฐ์ฒด๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค

โ›”๏ธ ๋ญ”๊ฐ€ ๊ฐ์ฒด์ง€ํ–ฅ์Šค๋Ÿฝ์ง€ ์•Š์€ ๋ฌธ์ œ ์ฝ”๋“œ ์˜ˆ์‹œ


Team team = new Team();
team.setName("teamA");
em.persist(team);

Member member = new Member();
member.setName("memberA");
member.setTeamId(team.getId());
em.persist(member);

Member findMember = em.find(Member.class, member.getId());
Team findTeam = em.find(Team.class, findMember.getTeamId());

System.out.println(findMember);

ํ…Œ์ด๋ธ”์— ๋งž์ถฐ ์™ธ๋ž˜ํ‚ค ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๊ฒฝ์šฐ ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— member์™€ ์—ฐ๊ด€๋œ team์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด DB์— team์„ ๊ณ„์† ์š”์ฒญํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

์™ธ๋ž˜ํ‚ค ์‹๋ณ„์ž๋ฅผ ์ง์ ‘ ๋‹ค๋ฃจ๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•จ!

๐Ÿ™†โ€โ™€๏ธ ๊ฐ์ฒด์ง€ํ–ฅ์Šค๋Ÿฝ๊ฒŒ ๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๋งคํ•‘ํ•ด์ฃผ๋ฉด

package hellojpa;

import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Entity
//@Table(name="MBR") ํ…Œ์ด๋ธ”๋ช… ๋‹ค๋ฅผ๋•Œ
@TableGenerator(
        name = "MEMBER_SEQ_GENERATOR",
        table = "MY_SEQUENCES",
        pkColumnValue = "MEMBER_SEQ", allocationSize = 1)
/*
@SequenceGenerator(
        name="MEMBER_SEQ_GENERATOR",
        sequenceName = "MEMBER_SEQ",    // ๋งค์นญํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œํ€€์Šค ์ด๋ฆ„
        initialValue = 1, allocationSize = 1)
 */
public class Member{

    @Id @GeneratedValue
    @Column(name="MEMBER_ID")
    private Long id;

    @Column(name="USERNAME")
    private String name;

    @ManyToOne
    @JoinColumn(name = "team_id")
    private Team team;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Team getTeam() {
        return team;
    }

    public void setTeam(Team team) {
        this.team = team;
    }
}
Team team = new Team();
team.setName("teamA");
em.persist(team);

Member member = new Member();
member.setName("memberA");
member.setTeam(team);
em.persist(member);

Member findMember = em.find(Member.class, member.getId());

System.out.println(findMember.getTeam().getId());

member์— team์ด ์—ฐ๊ด€๊ด€๊ณ„๋กœ ๋งบ์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— member์—์„œ getTeam()์œผ๋กœ team ๊ฐ์ฒด๋ฅผ ๊บผ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
๋‹ค๋Œ€์ผ ๊ด€๊ณ„์—์„œ๋Š” ๋‹ค ์ชฝ์—์„œ @ManyToOne ์–ด๋…ธํ…Œ์ด์…˜์„ ์ ์šฉํ•ด์ค€๋‹ค. ๋งŽ์•„->ํ•˜๋‚˜ = @Many To One = ๋งŽ Member ์ด๋ ‡๊ฒŒ ๊ทธ๋ƒฅ ์ฝ๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•  ๊ฒƒ ๊ฐ™๋‹ค.
JoinColumn์€ ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ…Œ์ด๋ธ”์—์„œ ์™ธ๋ž˜ํ‚ค๊ฐ€ ์–ด๋–ค ์ปฌ๋Ÿผ๊ฐ’์œผ๋กœ ์ €์žฅ๋˜๋Š”์ง€๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. (์ฒจ์— ํ—ท๊ฐˆ๋ ธ์Œ..)

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„์ธ๋ฐ
Team์—์„œ Member๋ฅผ ์กฐํšŒํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๋งบ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

package hellojpa;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import java.util.ArrayList;
import java.util.List;

@Entity
public class Team {

    @Id @GeneratedValue
    private Long id;

    private String name;

    @OneToMany(mappedBy = "team")
    List<Member> memberList = new ArrayList<>();

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Member> getMemberList() {
        return memberList;
    }

}

์ผ๋Œ€๋‹ค ์—ฐ๊ด€๊ด€๊ณ„๋กœ ๋งคํ•‘ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
mappedby ์— ๋“ค์–ด๊ฐˆ ๊ฐ’์€ ๋‹ค ์ชฝ์— ๋ณ€์ˆ˜๋ช… ๊ณง team์ด ๋œ๋‹ค. (์ด๊ฒƒ๋„ ์ฒจ์—” ํ—ท๊ฐˆ๋ ธ์Œ..) Member ์ชฝ์— ๋ณ€์ˆ˜๋ช…์ด teamTeam ์ด๋ผ๋ฉด 'Member์ชฝ teamTeam ๋ณ€์ˆ˜์™€ ์—ฐ๊ฒฐ๋๋‹ค' ๋ผ๋Š” ๋œป์—์„œ mappedby = teamTeam ์ด ๋˜๋Š” ๊ฒƒ!
๋‹ค๋งŒ ์—ฌ๊ธฐ์„  ์ฝ๊ธฐ ์ „์šฉ์ด๋ฏ€๋กœ ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ ์ชฝ์— ๊ฐ’์„ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€