๊ด€๋ฆฌ ๋ฉ”๋‰ด

Tech Log ๐Ÿ› ๏ธ

[jpa] ๋‹ค์–‘ํ•œ ์—ฐ๊ด€๊ด€๊ณ„ ๋งตํ•‘ ์ •๋ฆฌ ๋ณธ๋ฌธ

jpa

[jpa] ๋‹ค์–‘ํ•œ ์—ฐ๊ด€๊ด€๊ณ„ ๋งตํ•‘ ์ •๋ฆฌ

sehaan 2023. 2. 19. 18:42

์—ฐ๊ด€๊ด€๊ณ„ ๋งตํ•‘ ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  3๊ฐ€์ง€ 

 

1. ๋‹ค์ค‘์„ฑ 

    ex) ๋‹ค๋Œ€์ผ , ์ผ๋Œ€์ผ 

 

2. ๋‹จ๋ฐฉํ–ฅ , ์–‘๋ฐฉํ–ฅ

   - ํ…Œ์ด๋ธ”์€ ์™ธ๋ž˜ํ‚ค ํ•˜๋‚˜๋กœ ์–‘์ชฝ ์กฐ์ธ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ , ๊ฐ์ฒด๋Š” ์ฐธ์กฐ์šฉ ํ•„๋“œ๊ฐ€ ์žˆ๋Š” ๊ณณ์œผ๋กœ๋งŒ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

   - ๋”ฐ๋ผ์„œ ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„๋ผ๋Š” ๊ฒƒ์€ ์ฐธ์กฐ์šฉ ํ•„๋“œ๊ฐ€ ์–‘์ชฝ ๋ชจ๋‘ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค.

 

3. ์—ฐ๊ด€ ๊ด€๊ณ„์˜ ์ฃผ์ธ

   - ๊ฐ์ฒด๋Š” ํ…Œ์ด๋ธ”๊ณผ ๋‹ฌ๋ฆฌ ์ฐธ์กฐ๊ฐ€ ๋‘ ๊ตฐ๋ฐ์—์„œ ๋งŒ๋“ค์–ด ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•œ๋‹ค.

   - ์ฐธ์กฐ์šฉ ํ•„๋“œ๊ฐ€ ์–‘์ชฝ์— ์žˆ๋Š” ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„์—์„œ ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•  "์—ฐ๊ด€ ๊ด€๊ณ„์˜ ์ฃผ์ธ"์ด ํ•„์š”ํ•˜๋‹ค.

 

   a. ์—ฐ๊ด€ ๊ด€๊ณ„์˜ ์ฃผ์ธ

       - ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

   b. ์ฃผ์ธ์˜ ๋ฐ˜๋Œ€ํŽธ

       - ์™ธ๋ž˜ํ‚ค์˜ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๋‹จ์ˆœ ์กฐํšŒ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค !!

 

์—ฐ๊ด€ ๊ด€๊ณ„์˜ ์ข…๋ฅ˜

 

1. ๋‹ค๋Œ€์ผ [n:1]

    - ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

1-1 . ๋‹ค๋Œ€์ผ ์–‘๋ฐฉํ–ฅ

    - ์™ธ๋ž˜ํ‚ค๊ฐ€ ์žˆ๋Š” ์ชฝ์ด ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ์ด๋‹ค.

    

2. ์ผ๋Œ€๋‹ค [1:n]

   - ์ผ๋Œ€๋‹ค ๊ด€๊ณ„์—์„œ๋Š” '1' ์ด ์—ฐ๊ด€ ๊ด€๊ณ„์˜ ์ฃผ์ธ์ด์ง€๋งŒ ํ…Œ์ด๋ธ”์—์„œ๋Š” n์ด ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์ธ์ด ๋ฐ˜๋Œ€ํŽธ 

     ํ…Œ์ด๋ธ”์˜ ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํŠน์ดํ•œ ๊ตฌ์กฐ๊ฐ€ ๋œ๋‹ค. 

   - ๋”ฐ๋ผ์„œ ์›์น˜์•Š์€ sql๋ฌธ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. (๋ณต์žกํ•œ ์‹ค๋ฌด์—์„œ ์šด์˜์ด ๋งค์šฐ ํž˜๋“ค์–ด์ง„๋‹ค.)

   - ์ด๋Ÿฌํ•œ ํŠน์„ฑ๋•Œ๋ฌธ์— ์ผ๋Œ€๋‹ค๋ณด๋‹ค๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์— ์กฐ๊ธˆ ์†ํ•ด๋ฅผ ๋ณด๋”๋ผ๋„ ๋‹ค๋Œ€์ผ ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค !

   - @JoinClumn์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์กฐ์ธํ…Œ์ด๋ธ”(์ค‘๊ฐ„ํ…Œ์ด๋ธ”) ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

2.1 ์ผ๋Œ€๋‹ค ์–‘๋ฐฉํ–ฅ

   - ๊ณต์‹์ ์œผ๋กœ ์กด์žฌํ•˜์ง€ ์•Š์ง€๋งŒ ์ฝ๊ธฐ ์ „์šฉ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

@JoinColumn(insertable=false, updatable=false)

    - ์›ฌ๋งŒํ•˜๋ฉด ๋‹ค๋Œ€์ผ ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์ž !

 

3. ์ผ๋Œ€์ผ [1:1]

   - ์ผ๋Œ€์ผ ๊ด€๊ณ„์˜ ๋ฐ˜๋Œ€๋„ ์ผ๋Œ€์ผ์ด๋‹ค.

   - ์ฃผ ํ…Œ์ด๋ธ”์ด๋‚˜ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์— ์™ธ๋ž˜ํ‚ค๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3-1. ์ผ๋Œ€์ผ ์ฃผ ํ…Œ์ด๋ธ” ์™ธ๋ž˜ํ‚ค ๋‹จ๋ฐฉํ–ฅ

   - ๋‹ค๋Œ€์ผ ๋‹จ๋ฐฉํ–ฅ ๋งตํ•‘๊ณผ ์œ ์‚ฌํ•˜๋‹ค

3-2. ์ผ๋Œ€์ผ ์ฃผ ํ…Œ์ด๋ธ” ์™ธ๋ž˜ํ‚ค ์–‘๋ฐฉํ–ฅ

    - ์™ธ๋ž˜ํ‚ค๊ฐ€ ์žˆ๋Š” ๊ณณ์ด ์—ฐ๊ด€ ๊ด€๊ณ„์˜ ์ฃผ์ธ์ด๋‹ค.

    - jpa๋งตํ•‘์ด ํŽธ๋ฆฌํ•˜์ง€๋งŒ ์™ธ๋ž˜ํ‚ค์— null์„ ํ—ˆ์šฉํ•ด์•ผํ•œ๋‹ค.

3-3. ์ผ๋Œ€์ผ ๋Œ€์ƒ ํ…Œ์ด๋ธ” ์™ธ๋ž˜ํ‚ค ๋‹จ๋ฐฉํ–ฅ

    - jpa์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. 
3-4. ์ผ๋Œ€์ผ ๋Œ€์ƒ ํ…Œ์ด๋ธ” ์™ธ๋ž˜ํ‚ค ์–‘๋ฐฉํ–ฅ

    - 3-2๊ณผ ๋งตํ•‘ ๋ฐฉ๋ฒ•์ด ๊ฐ™๋‹ค.
    - ํ…Œ์ด๋ธ” ๊ด€๊ณ„๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ํ…Œ์ด๋ธ”์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ , ํ•ญ์ƒ ์ฆ‰์‹œ ๋กœ๋”ฉ์ด ๋œ๋‹ค.(ํ”„๋ก์‹œ ๊ธฐ๋Šฅ์˜ ํ•œ๊ณ„)

4. ๋‹ค๋Œ€๋‹ค [n:n]

     - ๊ด€๊ณ„ํ˜• DB๋Š” ํ…Œ์ด๋ธ” ๋‘๊ฐœ๋กœ ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†์ง€๋งŒ ๊ฐ์ฒด๋Š” ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด์„œ ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

     - ํ•˜์ง€๋งŒ ๋‹ค๋Œ€๋‹ค ๋งตํ•‘์„ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋ถ€๊ฐ€ ์ •๋ณด๋“ค์ด ์—ฐ๊ฒฐ ํ…Œ์ด๋ธ”์— ๋“ค์–ด์˜ฌ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‹ค๋ฌด์—์„  ๋ถ€์ ํ•ฉํ•˜๋‹ค.

     - ์ค‘๊ฐ„ ํ…Œ์ด๋ธ”์ด ์ˆจ๊ฒจ์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ฟผ๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

     - ์‚ฌ์šฉํ•˜์ง€ ๋ง์ž !!

 

4.1. ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„์˜ ๋Œ€์•ˆ 

     - ์—ฐ๊ฒฐ ํ…Œ์ด๋ธ”์„ ์—”ํ‹ฐํ‹ฐ๋กœ ์Šน๊ฒฉํ•˜๊ณ  ๋‹ค๋Œ€๋‹ค๋ฅผ ๋‹ค๋Œ€์ผ,์ผ๋Œ€๋‹ค๋กœ ๋ฐ”๊ฟ”์„œ ๋ณ€๊ฒฝํ•œ๋‹ค.

     - ์ด๋ ‡๊ฒŒํ•˜๋ฉด ์—ฐ๊ฒฐํ…Œ์ด๋ธ”์— ์—ฌ๋Ÿฌ ์ •๋ณด๋“ค์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.