[์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA] 2. ์˜ˆ์ œ ๋„๋ฉ”์ธ ๋ชจ๋ธ

2022. 9. 22. 10:22ใ†์ธํ”„๋Ÿฐ/์‹ค์ „! ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA

728x90

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%8D%B0%EC%9D%B4%ED%84%B0-JPA-%EC%8B%A4%EC%A0%84/dashboard

 

์‹ค์ „! ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA๋Š” ๊ธฐ์กด์˜ ํ•œ๊ณ„๋ฅผ ๋„˜์–ด ๋งˆ์น˜ ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๊ตฌํ˜„ ํด๋ž˜์Šค ์—†์ด ์ธํ„ฐํŽ˜์ด์Šค๋งŒ์œผ๋กœ ๊ฐœ๋ฐœ์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋ณต ๊ฐœ๋ฐœํ•ด์˜จ ๊ธฐ๋ณธ CRUD ๊ธฐ๋Šฅ๋„ ๋ชจ๋‘ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

www.inflearn.com

์ธํ”„๋Ÿฐ- ์‹ค์ „! ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. 

 

 

1๏ธโƒฃ ์˜ˆ์ œ ๋„๋ฉ”์ธ ๋ชจ๋ธ 

๊ฐ„๋‹จํžˆ Member, Team๋งŒ ๋งŒ๋“ค์–ด์„œ ์ง„ํ–‰ํ•œ๋‹ค. 

Member๋Š” ํ•˜๋‚˜์˜ Team์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ , Team์€ ์—ฌ๋Ÿฌ๋ช…์˜ Member๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. 

 

 

Member ์—”ํ‹ฐํ‹ฐ 

@Entity : Jpa๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด 

 

@Getter, @Setter : ๋กฌ๋ณต์—์„œ ์ง€์›ํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ธ๋ฐ @Setter๋Š” ๊ฐ€๊ธ‰์  ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๊ฒŒ ์ข‹๋‹ค. (set์„ ์•„๋ฌด๋ฐ์„œ๋‚˜ ๋‚จ๋ฐœํ•˜๋ฉด ๋‚˜์ค‘์— ์–ด๋””์„œ ์ˆ˜์ •์ด ์ด๋ค„์ง€๋Š”์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต๊ณ  ์œ ์ง€๋ณด์ˆ˜ ์ตœ์•…) 

 

@NoArgsConstructor(access = AccessLevel.PROTECTED) 

: ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๋ง‰๊ณ  ์‹ถ์ง€๋งŒ JPA์—์„œ๋Š” ํ”„๋ก์‹œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ํ•„์š”๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Protected๊นŒ์ง€๋Š” ์—ด์–ด๋‘ฌ์•ผ ํ•ด์„œ protected๋กœ ์„ค์ •ํ–ˆ๋‹ค. - > public์œผ๋กœ ํ•˜๋ฉด ๋˜ ์—ฌ๊ธฐ์ €๊ธฐ์„œ ์‚ฌ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ 

 

@ToString()

: ToString ํ•  ๋•Œ Team ํฌํ•จํ•˜๋ฉด ์ ˆ๋Œ€ ์•ˆ๋œ๋‹ค..!!! ์–‘๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„์ด๊ธฐ ๋•Œ๋ฌธ์— Team์—๋„ Member๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด์„œ ๋ฌดํ•œ๋ฃจํ”„์— ๊ฑธ๋ ค StatckOverFlow ์—๋Ÿฌ ๋ฐœ์ƒํ•œ๋‹ค. 

 

changeTeam() 

: ์—ฐ๊ด€๊ด€๊ณ„ ๋ฉ”์„œ๋“œ๋กœ Member์—์„œ๋งŒ Team ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋์ด ์•„๋‹ˆ๋ผ ์–‘๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„์ด๋ฏ€๋กœ Team์˜ Members list์—๋„ Member ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค˜์•ผํ•œ๋‹ค.  (๊นŒ๋จน๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์„œ ์—ฐ๊ด€๊ด€๊ณ„ ๋ฉ”์„œ๋“œ๋กœ ์ด๋ ‡๊ฒŒ ์—ฐ๊ฒฐํ•ด์„œ ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค) 

 

 

Team ์—”ํ‹ฐํ‹ฐ

Member์™€ Team ์€ ์„œ๋กœ ์–‘๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„์ด๋‹ค. 

์–‘๋ฐฉํ–ฅ์ด๋ฉด ํ•œ์ชฝ์ด ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š”๋ฐ ๋ณดํ†ต ์™ธ๋ž˜ํ‚ค๋Š” '๋‹ค' ์ชฝ์—์„œ ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Member๊ฐ€ ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ์ด ๋œ๋‹ค. 

์—ฐ๊ด€๊ด€๊ณ„ ์ฃผ์ธ์ด ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ์•„๋‹Œ ๊ณณ์€ ๋‹จ์ˆœํžˆ ์กฐํšŒ๋งŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

์—ฐ๊ด€๊ด€๊ณ„ ์ฃผ์ธ์— @JoinColumn์œผ๋กœ Team์˜ pk๊ฐ’์„ ์„ค์ •ํ•ด์ฃผ๊ณ , ์—ฐ๊ด€๊ด€๊ณ„ ์ฃผ์ธ์ด ์•„๋‹Œ ๊ณณ์—๋Š” mapped by๋กœ Member์˜ Team์„ ์„ค์ •ํ•ด์ค€๋‹ค. 

 

โ— ์ฐธ๊ณ 

๊ทธ๋ฆฌ๊ณ  ๊ฐ€๊ธ‰์  ๋ชจ๋“  ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ „๋žต์€ LAZY๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค. 

 

 

2๏ธโƒฃ ๋ฐ์ดํ„ฐ ํ™•์ธ ํ…Œ์ŠคํŠธ 

 

 

 

 

 

 

 

 

 

 

 

728x90