๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[JAVA]/JPA

JPARepository์˜ findAll() ํ˜ธ์ถœ ์‹œ ํ•˜๋‚˜์˜ Row๊ฐ€ ์ค‘๋ณตํ•ด์„œ ์—ฌ๋Ÿฌ ๊ฐœ ๋“ค์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ์™€ ํŠน์ • ์ปฌ๋Ÿผ๋งŒ null์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ (์—”ํ‹ฐํ‹ฐ๋ช…๊ณผ ์ปฌ๋Ÿผ๋ช…์˜ ์˜ฌ๋ฐ”๋ฅธ ๋งคํ•‘ ๋ฐฉ๋ฒ•)

by ํŒกํŽ‘ํ 2023. 5. 19.
728x90
๐Ÿ’ก JPARepository์˜ findAll() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์„œ List์— ์ €์žฅ์„ ํ–ˆ๋Š”๋ฐ ํ•˜๋‚˜์˜ Row ๊ฐ’๋งŒ ์ž”๋œฉ ๋“ค์–ด๊ฐ€ ์žˆ์—ˆ๋‹ค. DB๋ฅผ ํ™•์ธํ•ด ๋ณด๋‹ˆ ๋งจ ์œ„ ์ฒซ ๋ฒˆ์งธ row ๋ฐ์ดํ„ฐ์˜€๋Š”๋ฐ ํ…Œ์ด๋ธ”์˜ row ์ˆ˜๋งŒํผ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งคํ•‘์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ๋‹จ๋ฒˆ์— ์•Œ์•„์ฑ˜๋‹ค. 



ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด ๋ณด์ž.

  • ์šฐ์„  ๋กœ์ปฌ DB์— ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ๋‹ค.

 

 

  • ์นผ๋Ÿผ๋ช…์„ ์ง“๊ณ  ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋„ ์ ๋‹นํ•˜๊ฒŒ ๋„ฃ๋Š”๋‹ค.

 

 

  • test ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ test ํ…Œ์ด๋ธ”์— 10๊ฐœ์˜ row๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.

 

 

  • ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • ๋‚˜๋Š” ๋‘ ๊ฐ€์ง€๋ฅผ ํ…Œ์ŠคํŠธํ•  ์˜ˆ์ •์ด๋ฏ€๋กœ ์ผ๋ถ€๋Ÿฌ id์™€ name ํ•„๋“œ๋ช… ํ…Œ์ด๋ธ”์˜ ์นผ๋Ÿผ๋ช…๊ณผ ๋‹ค๋ฅด๊ฒŒ ํ–ˆ๋‹ค.
  • seq๋Š” test ํ…Œ์ด๋ธ”์˜ ID์— ํ•ด๋‹นํ•œ๋‹ค.
  • name์€ test ํ…Œ์ด๋ธ”์˜ USER_NAME์— ํ•ด๋‹นํ•œ๋‹ค.
  • ๋‚˜๋จธ์ง€ ์นผ๋Ÿผ๋ช…์€ ํ•„๋“œ๋ช…๊ณผ ์ผ์น˜ํ•œ๋‹ค.

 

 

  • JPARepository๋ฅผ ์ƒ์†๋ฐ›๋Š” TestRepository ์ƒ์„ฑ

 

 

์ฒซ ๋ฒˆ์งธ ํ…Œ์ŠคํŠธ

  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค. testrepository์˜ findAll() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๋กœ๊ทธ๋ฅผ ์ฐ๋Š” ํ…Œ์ŠคํŠธ์ด๋‹ค. ๋Œ๋ ค๋ณด์ž.

 

 

  • ๋ ์šฉ.. ์™ผ์ชฝ์€ testEntity์˜ seq(ํ…Œ์ด๋ธ”์˜ ID)์ด๋ฉฐ ์˜ค๋ฅธ์ชฝ์€ testEntity์˜ name(ํ…Œ์ด๋ธ”์˜ USER_NAME)์ด๋‹ค.
  • ํ•˜๋‚˜๋Š” ์ค‘๋ณต๊ฐ’์ด ๋‚˜์˜ค๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๊ฐ’์ด ๋“ค์–ด๊ฐ€ ์žˆ์ง€ ์•Š๋‹ค.

 

 

  • Java์—์„œ๋Š” ์ฐธ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ถœ๋ ฅํ•  ๋•Œ ๊ฐ์ฒด์˜ toString() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  • toString() ๋ฉ”์„œ๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ์ฒด์˜ ๋ฌธ์ž์—ด ํ‘œํ˜„์„ <ClassName>@<HashCode> ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ํ•ด์‹œ ์ฝ”๋“œ(Hash Code)๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ JVM(Java Virtual Machine)์˜ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ๊ณ ์œ  ์‹๋ณ„์ž์ด๋‹ค.
  • ๋”ฐ๋ผ์„œ ์œ„ 10๊ฐœ์˜ ๊ฐ์ฒด๋Š” ์ „๋ถ€ ๊ฐ™์€ ๊ฐ์ฒด๊ฐ€ ๋ฐ˜๋ณตํ•ด์„œ ๋ฆฌ์ŠคํŠธ์— ๋“ค์–ด๊ฐ”์Œ์„ ๋ณด์—ฌ์ค€๋‹ค.

 

  •  ๋˜‘๊ฐ™์€ ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค. ์ด๋Š” ์—”ํ‹ฐํ‹ฐ์˜ ํ•„๋“œ๋ช…๊ณผ ํ…Œ์ด๋ธ”์˜ ์นผ๋Ÿผ๋ช…์ด ๋‹ฌ๋ผ JPA๊ฐ€ ์—”ํ‹ฐํ‹ฐ์™€ ํ…Œ์ด๋ธ”์„ ๋งคํ•‘ํ•  ๋•Œ  ๊ฐœ๋ณ„ ๊ฐœ์ฒด์— ๋Œ€ํ•ด ์˜ฌ๋ฐ”๋ฅธ ๋งคํ•‘์ด ๋ถˆ๊ฐ€๋Šฅํ•ด ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋™์ผํ•œ ๊ฐœ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” @Id์— ํ•ด๋‹นํ•˜๋Š” ํ•„๋“œ๋ช…์„ ํ…Œ์ด๋ธ”์˜ ์นผ๋Ÿผ๋ช…๊ณผ ๊ฐ™๊ฒŒ ํ•˜์—ฌ ์ž๋™ ๋งคํ•‘์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ฐ”๊พธ๊ฑฐ๋‚˜, @Column(name = "") ์• ๋„ˆํ…Œ์ด์…˜์„ ์ด์šฉํ•ด ์ˆ˜๋™ ๋งคํ•‘์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

  • ๋‚˜๋Š” @Column ์• ๋„ˆํ…Œ์ด์…˜์„ ์ด์šฉํ•ด ์ˆ˜๋™ ๋งคํ•‘ํ•ด ์ฃผ์—ˆ๋‹ค.

 

 

  •  ํ…Œ์ด๋ธ”์˜ ๊ฐ’์ด ์ค‘๋ณต๋˜์ง€ ์•Š๊ณ  ์ •์ƒ์ ์œผ๋กœ ๋“ค์–ด์˜จ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๋‘ ๋ฒˆ์งธ ํ…Œ์ŠคํŠธ

  • ๊ฐ™์€ ๋ฌธ์ œ์˜€๋˜ ํ•„๋“œ๋ช…์ธ name์— ๋Œ€ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ๋ช…์ธ USER_NAME์„ ์ˆ˜๋™ ๋งคํ•‘ํ•ด ์ฃผ์—ˆ๋‹ค.

 

 

  • ํ•„๋“œ๋ช…๊ณผ ์นผ๋Ÿผ๋ช…์ด ๋ชจ๋‘ ์ •์ƒ์ ์œผ๋กœ ๋งคํ•‘๋œ ๋ชจ์Šต์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์ •๋ฆฌ

  • JPA๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์นด๋ฉœ์ผ€์ด์Šค์˜ ์—”ํ‹ฐํ‹ฐ ํ•„๋“œ๋ช…์„ ์Šค๋„ค์ดํฌ์ผ€์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์นผ๋Ÿผ๋ช…์œผ๋กœ ์ž๋™๋งคํ•‘ํ•ด ์ค€๋‹ค.
  • ๋งŒ์•ฝ ์ž๋™ ๋งคํ•‘์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ(์—”ํ‹ฐํ‹ฐ ํ•„๋“œ๋ช…๊ณผ ํ…Œ์ด๋ธ” ์นผ๋Ÿผ๋ช…์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ) @Column์„ ์‚ฌ์šฉํ•ด ์ˆ˜๋™ ๋งคํ•‘ํ•ด์ค˜์•ผ ํ•œ๋‹ค.
  • @Id์— ํ•ด๋‹นํ•˜๋Š” ๊ธฐ๋ณธํ‚ค๋Š” ๋ฐ˜๋“œ์‹œ ๋งคํ•‘์ด ๋˜์–ด์•ผ ์ •์ƒ์ ์œผ๋กœ ํ…Œ์ด๋ธ” row ๊ฐ’์„ ๋ชจ๋‘ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
728x90