Posts
Q&A
BookQueryDslRepository์ @Repository ์ ๋ํ ์ด์ ์ด ์๋๋ผ @Component ์ ๋ํ ์ด์ ์ ์ฌ์ฉํ์ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค.
ํ, ์ ์ ์์ด ์ง๋ด๋ค๊ฐ ๋ต๋ณ์ด ๋ฌ๋ฆฐ ์ค๋ ๋ชจ๋ฅด๊ณ ์์๋ค์.์์ธ ๋ฒ์ญ ๋๋ฌธ์ด์๊ตฐ์. ๊ฐ์ฌํฉ๋๋ค! ๋๋ถ์ ์๋ฌธ์ด ์ข ํ๋ ธ์ต๋๋ค.
- 1
- 2
- 390
Q&A
ํ๋ก์ ๊ด๋ จํ equals()์ค๋ฒ๋ผ์ด๋ฉ, ์ ๊ฐ ์ดํดํ ๊ฒ์ด ๋ง๋์?
์น์ ํ ๋ต๋ณ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋๋ถ์ ์ดํด๊ฐ ๋์์ต๋๋ค. ๋ค๋ง, ๊ด๋ จํด์, ์ถ๊ฐ์ ์ผ๋ก ๊ถ๊ธํ ๊ฒ๋ค์ด ์์ต๋๋ค. 1. getter๋ก ํ๋ก์์ ํ๋์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด ํ๋ก์์ getName() ๋ฉ์๋๊ฐ ํ๋ก์ ๋ด๋ถ์ target.getName ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๋ฐฉ์์ผ๋ก ์ค๋ฒ๋ผ์ด๋ฉ ๋์ด ์์ด์, 3์ ๋ํ ๋ต๋ณ์ฒ๋ผ, ํ๋ ์ ๊ทผ๋ฐฉ์๊ณผ ๋ค๋ฅด๊ฒ ์๋ณธ ๊ฐ์ฒด์ ๊ฐ์ ๋ฐ์์ฌ ์ ์๋ ๊ฒ์ผ๊น์? (๋ฐ๋ฉด ํ๋ ๊ฐ์ ๊ฒฝ์ฐ ์ด ๋ฐฉ์์ ํด๊ฒฐ์ด ๋ถ๊ฐ๋ฅํ๊ธฐ์ null์ ๋ฐํํ๋ ๊ฒ์ด๊ณ ) 2. ํ ๊ฐ์์ ๋ฒ์์์๋ ์ฝ๊ฐ ๋ฒ์ด๋์ง๋ง, getter/setter ๋ฉ์๋ ์์ฒด์ ๋ํ ์๋ฌธ์ ๋๋ค. ์๋ฐ๋น ํ๋กํผํฐ ๊ท์ฝ ๋๋ฌธ์ getter์ setter๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๊ฒ ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ getter์ setter๋ฅผ ์ฌ์ฉํ๋๊ฐ์ ๋ํด์๋ ์ฝ๊ฐ ์๋ฌธ์ด ๋จ์ ์์ต๋๋ค. public์ผ๋ก ๊ณต๊ฐํ getter์ setter ๋ฉ์๋๋ฅผ ๋ง๋๋ ๊ฒ์ ๊ฒฐ๊ณผ์ ์ผ๋ก ํ๋ ๊ฐ ์์ฒด์ ์ด๋์์๋ ์ ๊ทผ ๊ฐ๋ฅํ๋ค๋ ๋ฉด์์ ํด๋์ค ์์ฒด์ ์๋์๋ ์๋ฏธ๊ฐ ์์ง ์๋ ํ๋ ์๋ฌธ์ ๋๋ค. ๊ทธ๋์ ์ ๊ฐ getter/setter ์ฌ์ฉ์ ๋ํด ์๊ฐํ๋ ๋ด๋ฅผ ์ ๋ฆฌํด ๋ดค๋๋ฐ, ๋ค์๊ณผ ๊ฐ์ต๋๋ค: 1) ํ๋์ ๊ทผ๊ณผ ๋ค๋ฅด๊ฒ, getter/setter ์ ๊ทผ์ ์ค๋ฒ๋ผ์ด๋๋ฅผ ์ด์ฉํด์ ์ํฉ์ ๋ง์ถ ์ ์๊ธฐ ๋๋ฌธ(์ ๊ฐ ์์ 1๋ฒ ๋ฌผ์์์ ํ์ด๋ฒ๋ค์ดํธ๊ฐ getter๋ฅผ ํด๊ฒฐํ ๋ ์ฌ์ฉํ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํ ๊ฒ์ ๋๋ค.) 2) ๋ณ์ ์์ฒด์ ๋ํ ์ ๊ทผ์ ํต์ ํ ์ ์๋ ํ๋ ์ ๊ทผ ์ ํ์์ ๋นํด, ๋ถ๋ณ๊ฐ์ฒด ๋ฑ์ ๋ง๋ค ๋์ฒ๋ผ getter๋ง ๋ง๋ค๊ณ setter๋ ๋ง๋ค์ง ์๋ ์์ผ๋ก ์ฝ๊ธฐ/์ฐ๊ธฐ ์ค ํ๋๋ง ์ ์ฝํ ์ ์์ด์(๋ฌผ๋ก ์ปฌ๋ ์ ์ ๊ฒฝ์ฐ์๋ ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด ๋จ์ ์์ง๋ง) 3) getter/setter๋ผ๋ ๋ช ๋ช ์ด ๊ฐ๋ฐ์์ ๊ฐ์ฅ ์์ฃผ ์ฐ์ด๋ ํ๋ ๋ณ์์ ๋ํ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋ณ์์ ๋ช ๋ช ๋ฒ ์ ์ผ๊ด์ฑ์ ์ค์ 3)์ ๊ฒฝ์ฐ์๋ ์๋ฌธ์ ์ด ์๋๋ฐ, ๊ทธ๋ ๋ค๋ฉด IntelliJ ๋จ์ถํค๋ก ๋ง๋ค์ด์ง๋ ๊ฒ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ getter/setter ์ด์์ผ๋ก ์ถ๊ฐ์ ์ธ ๋ฌด์ธ๊ฐ๊ฐ ์๊ฑฐ๋, ๋ณํ๋์๋ค๋ฉด getter/setter ๋ช ๋ช ๋ฒ์ ์ฌ์ฉํ์ง ์๋ ํธ์ด ๋์๊น์? 4) getter๋ side effect์ ๋ํด ์์ ํ์ง๋ง, setter๋ ๊ทธ๋ ์ง ์๊ธฐ ๋๋ฌธ์, setter ์ฌ์ฉ์ ๊ฐ๊ธ์ ํผํ๋ ๊ฒ์ด ์ข๋ค. 3. Hibernate.unproxy()๋ฉ์๋ ๊ณต๋ถํ๋ค๊ฐ Hibernate.unproxy()์ ์กด์ฌ์ ๋ํด ์๊ฒ ๋์๋๋ฐ์. ์ฐธ๊ณ ํ ๊ธ ๋งํฌ, ๊ธ์ ๋ํ ๊ฐ๋จ ๋ฒ์ญ ์ ๊ธ์์๋ ํ๋ก์๋ก ๋ก๋ฉ๋ ๊ฐ์ฒด์ ์๋ณธ ๊ฐ์ฒด์ ๋๋ฑ์ฑ ๋ฌธ์ ๋ฅผ unproxy๋ฅผ ์ด์ฉํด์ ํด๊ฒฐํ๋๋ฐ, ์ด๋ฐ ๋ฐฉ๋ฒ์ด ๋ง์ด ์ฐ์ด๋์ง๋, ๋๋ฑ์ฑ ๋ฌธ์ ๋ผ๋ฉด equals() hashCode()์ค๋ฒ๋ผ์ด๋ฉ ํ๋ ๊ฒ์ ๋นํด, ๊ตณ์ด ์ด ๋ฐฉ๋ฒ์ ์ธ ๋ฉ๋ฆฌํธ๊ฐ ์๋์ง๋ ์๋ฌธ์ด ๋ค์์ต๋๋ค. ํ์ด๋ฒ๋ค์ดํธ์ ์ข ์์ ์ด๊ธฐ๋ ํ๊ตฌ์. ๋๋ฑ์ฑ ๋น๊ต ์ธ์ ํ๋ก์ ๊ฐ์ฒด๋ก ์ธํด ๋ฌธ์ ๋ฐ์ํ ์ด์ ๊ฐ ๋ ์์๊น์? unproxy + ํ๋ณํ ์กฐํฉ์ด ์กด์ฌํ๋ ๊ฒ์๋ ๋ถ๋ช ์ด์ ๊ฐ ์์ ๊ฒ ๊ฐ์๋ฐ, ๊ตณ์ด .class()๋ฅผ ๋ง์ถฐ์ฃผ๋ ๋ฐฉ์์ด ํ์ํ ์ํฉ์ด ์์๊น์?
- 5
- 2
- 914