Skip to content

[recap] ์–‘๋ฐฉํ–ฅ ๋งคํ•‘์—์„œ MappedBy๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ย #10

@move-hoon

Description

@move-hoon

๋ฌด์—‡์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‚˜์š”?

์–‘๋ฐฉํ–ฅ ๋งคํ•‘

  • ์–‘๋ฐฉํ–ฅ ๋งคํ•‘์€ ๋‘ ๊ฐ์ฒด๊ฐ€ ์„œ๋กœ ์ฐธ์กฐํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์ •์˜ํ•˜๋Š” ์—ฐ๊ด€๊ด€๊ณ„ ๋ฐฉ์‹์ด๋‹ค.
  • ์‹ค์ œ๋กœ๋Š” ๊ฐ๊ฐ์˜ ๋‹จ๋ฐฉํ–ฅ ๋งคํ•‘์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ ์ด๋ฅผ ํ•ฉ์ณ ์–‘๋ฐฉํ–ฅ์„ ์˜๋ฏธํ•œ๋‹ค.

MappedBy ์‚ฌ์šฉ ์ด์œ 

image
  • ํ˜„์žฌ Member์™€ Team์€ N:1 ๊ด€๊ณ„์ด๋‹ค.
  • ์—ฌ๊ธฐ์„œ ์–‘๋ฐฉํ–ฅ ๋งคํ•‘์„ ์ ์šฉํ•œ๋‹ค๋ฉด, Member ๊ฐ์ฒด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Team ๊ฐ์ฒด๋„ members ํ•„๋“œ๋ฅผ ํ†ตํ•ด MEMBER ํ…Œ์ด๋ธ”์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ํ˜ผ๋ž€์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๊ฐ์ฒด์ค‘ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋งŒ ํ…Œ์ด๋ธ”์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •ํ•˜๋Š” ๊ฒƒ์ด MappedBy ์˜ต์…˜์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋А ๊ณณ์— ํ•ด๋‹น ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹์„๊นŒ?

MappedBy ์œ„์น˜

@Entity
public class Member { 

    @Id @GeneratedValue
    private Long id;
    
    @Column(name = "USERNAME")
    private String name;
    private int age;
    
    @ManyToOne
    @JoinColumn(name = "TEAM_ID")
    private Team team;
    
    โ€ฆ Getter, Setter ์ƒ๋žต
}
@Entity
public class Team {

    @Id @GeneratedValue
    private Long id;
    private String name;
    
    @OneToMany(mappedBy = "team")
    List<Member> members = new ArrayList<Member>();

    โ€ฆ Getter, Setter ์ƒ๋žต
}
  • ์ฃผ์ธ์ด ์•„๋‹Œ ๊ฐ์ฒด์— MappedBy๋ฅผ ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  • ์˜ˆ์ œ์—์„œ๋Š” Team ๊ฐ์ฒด์— MappedBy๊ฐ€ ์ ์šฉ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด ๊ฒฝ์šฐ์—๋Š” Team ๊ฐ์ฒด๋Š” MEMBER ํ…Œ์ด๋ธ”์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๊ณ  Member ๊ฐ์ฒด๋งŒ์ด ๊ถŒํ•œ์„ ๋ฐ›๊ณ  ์ฃผ์ธ์ด ์•„๋‹Œ ์ชฝ์€ ์ฝ๊ธฐ(์กฐํšŒ)๋งŒ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ์ฆ‰, MappedBy๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์€ ๊ฐ์ฒด๊ฐ€ ์ฃผ์ธ(Owner)๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ์ฃผ์ธ์œผ๋กœ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.(์™ธ๋ž˜ํ‚ค๋ฅผ ๊ฐ€์ง„ Member ๊ฐ์ฒด๊ฐ€ ์ฃผ์ธ)

์–ด๋ ค์šด ๋‚ด์šฉ์ด ์žˆ์—ˆ๋‹ค๋ฉด ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜์˜€๋‚˜์š”?

x

์–ด๋–ค ์ž๋ฃŒ๋ฅผ ์ฐธ๊ณ ํ•˜์˜€๋‚˜์š”?

https://velog.io/@wogh126/JPA-%EC%96%91%EB%B0%A9%ED%96%A5-%EB%A7%A4%ED%95%91%EC%97%90%EC%84%9C-MappedBy%EA%B0%80-%ED%95%84%EC%9A%94%ED%95%9C-%EC%9D%B4%EC%9C%A0

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions