๐ORM:JPA
์ฟผ๋ฆฌ ๋ฉ์๋ 3๊ฐ์ง 1. ๋ฉ์๋ ์ด๋ฆ์ผ๋ก ์ฟผ๋ฆฌ ์์ฑ 2. JPA Named Query 3. ๋ ํฌ์งํ ๋ฆฌ ์ธํฐํ์ด์ค์ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ์ ์(@Query ์ด๋
ธํ
์ด์
์ ์ฌ์ฉ) 1๋ฒ์ ๋ฉ์๋ ์ด๋ฆ์ด ๊ธธ์ด์ง๋ฉด ๋ฌธ์ ๊ฐ ๋จ 2๋ฒ์ ์ค๋ฌด์์ ๊ฑฐ์ ์ฌ์ฉํ์ง ์์ 3๋ฒ์ ์ค๋ฌด์์ ๋ง์ด ์ฌ์ฉ 3. ๋ ํฌ์งํ ๋ฆฌ ์ธํฐํ์ด์ค์ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ์ ์(@Query ์ด๋
ธํ
์ด์
์ ์ฌ์ฉ) ์ฅ์ : JPA Named ์ฟผ๋ฆฌ์ฒ๋ผ ์ ํ๋ฆฌ์ผ์ด์
์คํ ์์ ์ ๋ฌธ๋ฒ ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ ์ ์์ DTO ์กฐํํ๋ ๋ฐฉ๋ฒ dto์ชฝ์ ์์ฑ์๊ฐ ์์ด์ผ ํจ new + ๋ชจ๋ ํจํค์ง ๊ฒฝ๋ก + ์์ฑ์ ๋ฐฉ์์ผ๋ก select ํด์ผ ํจ ์ปฌ๋ ์
์ ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉด ๋น ์ปฌ๋ ์
์ ๋ฐํํ๋ค null์ด ์๋ result =[ ] ์ด๋ค. ๋จ, Member ํด๋์ค ํ๋์ด๋ฉด null์ ๋ฐํํ๋ค db์ ๋ฐ์ด..
๐๋ฐฑ์๋ : BackEnd
DTO์ ์์น๋ ํจํค์ง ์ค๊ณ๋ฅผ ์ด๋ป๊ฒ ๊ฐ์ ธ๊ฐ๋๊ฐ์ ๋ฐ๋ผ ์์ ํ ๋ฌ๋ผ์ง๋ค ์ด๋ค ๊ฒฝ์ฐ๋ repository ๊ณ์ธต์ ์์ ์๋ ์๊ณ , service ๊ณ์ธต์ ์์ ์๋ ์๋ค. ์ฌ๋ฌ ํจํค์ง์์ ๊ณต์ ํด์ผ ํ๋ ์ํฉ์ด๋ฉด ๋ณ๋์ dto ํจํค์ง๋ฅผ ๋ง๋ค์ด์ ๋ฃ์ด๋ . ํน์ ์๋น์ค ๊ณ์ธต๊น์ง๋ง ์ฌ์ฉ๋๋ฉด, ํด๋น ์๋น์ค ๊ณ์ธต์ dtoํด๋์ค๋ฅผ ํจ๊ป ๋๋ค. ํน์ฑ repository ๊น์ง ํด๋น dto๊ฐ ์ฌ์ฉ๋๋ฉด ํด๋น repository ๊ณ์ธต์ dtoํด๋์ค๋ฅผ ํจ๊ป ๋ ๊ถ๊ทน์ ์ผ๋ก๋ ํจํค์ง ์์ง๋์ ๊ฒฐํฉ๋๋ฅผ ๊ณ ๋ฏผํ๋ฉด์ ๊ฐ๊ธ์ ๋ค๋ฅธ ํจํค์ง์ ์ฐ๊ด์ ์ค์ด๋๋ก ํ๋ ๋ฐฉ์์ด ์ข์ ๋ฐฉ์์ด๋ค ์ฐธ์กฐ : https://www.inflearn.com/questions/24222/dto-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC..
๐๋ฐฑ์๋ : BackEnd
SpringBoot 2.7.13์์ swagger๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด dependencies๋ฅผ ์ถ๊ฐํ ๋ค ์คํํ์์ผ๋ ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋ค ใ
ใ
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException ์ฐพ์๋ณด๋ application.properties ์ ์๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ฉด ๋๋ค๊ณ ํ๋ค spring.mvc.pathmatch.matching-strategy=ant_path_matcher 2.6 ๋ฒ์ ์ดํ์ spring.mvc.pathmatch.matching-str..
๐ORM:JPA
์ค์์ ์ํฐํฐ ์์์ฑ ์ปจํ
์คํธ๊ฐ ๋๋ ๊ด๋ฆฌํ์ง ์๋ ์ํฐํฐ ์์์ฑ ์ปจํ
์คํธ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค ๊ธฐ์กด ์๋ณ์๋ฅผ ๊ฐ์ง๊ณ ์๋ ์์๋ก ๋ง๋ค์ด๋ธ ์ํฐํฐ ์ค์์ ์ํฐํฐ๋ฅผ ๋ง๋๋ 3๊ฐ์ง ๋ฐฉ๋ฒ em.detach(entity) : ํน์ ์ํฐํฐ๋ง ์ค์์ ์ํ๋ก ์ ํ em.clear() : ์์์ฑ ์ปจํ
์คํธ๋ฅผ ์์ ํ ์ด๊ธฐํ em.close() : ์์์ฑ ์ปจํ
์คํธ๋ฅผ ์ข
๋ฃ ์ค์์ ์ํฐํฐ๋ฅผ ์์ ํ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ ๋ณ๊ฒฝ ๊ฐ์ง ๊ธฐ๋ฅ (์ ํธ) em.find๋ก ์กฐํํ ์ํฐํฐ๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์ ๋ณํฉ(merge) ์ฌ์ฉ em.merge๋ฅผ ์คํ ์์ ์ํฐํฐ์ ๊ฐ์ ์ค์์ ์ํฐํฐ์ ๊ฐ์ผ๋ก ๋ชจ๋ ๊ต์ฒดํจ (๋ณํฉ์ ๊ฐ์ด ์์ผ๋ฉด null๋ก ์
๋ฐ์ดํธ ํ ์ํ๋ ์์) ์๋ก์ด ์์ ์ํ์ ์ํฐํฐ๋ฅผ ๋ฐํํจ ( ํ๋ผ๋ฏธํฐ๋ก ๋์ด์จ ์ํฐํฐ๋ ..
๐๋ฐฑ์๋ : BackEnd
์์ฑ์ injection์ ์ฐ๋๊ฒ ์ข๋ค ์์ฑ์ injection์ ํ๋ฉด setter๋ก entity๋ฅผ ๋ฐ๊พธ๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค ์์ฑ์๊ฐ ํ๋๋ง ์๋๊ฒฝ์ฐ @Autowired๋ฅผ ์๋ตํด๋ ๋๋ค MemberRepository๋ ๋ณ๊ฒฝ๋ ์ผ์ด ์๊ธฐ ๋๋ฌธ์ final๋ก ํด์ฃผ๋๊ฒ ์ข๋ค test case๋ฅผ ์์ฑํ ๋ ์ปดํ์ผ ๋จ๊ณ์์ injection์ ๋ช
ํํ๊ฒ ์ ์ ์๋ค ( ์๋ ์ฝ๋์ ๊ฐ์ด ) @RequiredArgsConstructor final์ด ์๋ ํ๋๋ง์ ๊ฐ์ง๊ณ ์์ฑ์๋ฅผ ๋ง๋ค์ด ์ค๋ค ๊ฒฐ๊ตญ ์๋์ผ๋ก ์์ฑ์๋ฅผ ํ๋ ๋ง๋ค๊ณ injection์ ๋ฐ์ ์ ์์ @PersistenceContext -> @Autowired @PersistenceContext ๋ฅผ @Autowired๋ก ๋์ฒดํ ์ ์์ (SpringBo..
๐ORM:JPA
@Transactional JPA๋ฅผ ์ฌ์ฉํ๋ฉด ํญ์ ํธ๋์ญ์
์์์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ค. ํธ๋์ญ์
์์ด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์์ธ๊ฐ ๋ฐ์ @Transactional(readOnly=true) ์กฐํํ๋ ๊ณณ(์ฝ๊ธฐ ๋์)์ ์์ฑํด์ฃผ๋ฉด ์ฑ๋ฅ์ ์ต์ ํ ํ ์ ์์ ์ฐ๊ธฐ์์๋ X ํด๋์ค ์ต์๋จ์ @Transactional(readOnly=true) ๋ฅผ ์ ์ด์ฃผ๊ณ , ์ฐ๊ธฐํ๋ ๊ณณ์๋ @Transactional์ ์ ์ด์ฃผ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ ํ์
๐ORM:JPA
๋ค๋์ผ ์ฐ๊ด๊ด๊ณ์์ @JoinColumn(name) ์ปฌ๋ผ ์ด๋ฆ ๋งคํ์ ์ฌ์ฉ๋๋ ์ด๋
ธํ
์ด์
์ฐ๊ด๊ด๊ณ์๋ ์๋ฌด๋ฐ ์ํฅ์ด ์๋ค ์กฐ์ธ ๋์ ์ปฌ๋ผ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด @JoinColumn(referencedColumnName)์ ํ์ฉํ ์ ์๋ค! ๋ฐ๋ผ์ ๋ฌด์กฐ๊ฑด @JoinColumn์ ์๋ตํด์ ์๋๋ค ์ผ๋๋ค ๋จ๋ฐฉํฅ ์ฐ๊ด๊ด๊ณ์์ @JoinColumn @JoinColumn ์ด๋
ธํ
์ด์
์ ๊ผญ ๋ช
์ํด์ค์ผ ํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค๊ฐ ํ
์ด๋ธ์ ์๋์ผ๋ก ์์ฑํจ ์ผ๋๋ค ์๋ฐฉํฅ ์ฐ๊ด๊ด๊ณ์์ @JoinColumn ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ ์ผ(1)์๊ฒ ์ฃผ๋ ค ํ๋ ๊ฒฝ์ฐ ๋ค(N)์ชฝ์ @JoinColumn(insertable=false, updateable=false)๋ฅผ ์ฌ์ฉํ๋ฉด ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ ๊ฐ์ ์ํฌ ์ ์๋ค. ์ฐธ๊ณ : https://hyeon9..
๐ORM:JPA
JPA๋ ๋ค์ํ ์ฟผ๋ฆฌ ๋ฐฉ๋ฒ์ ์ง์ํ๋ค JPQL (๊ฑฐ์ ๋๋ถ๋ถ JPQL๋ก ํด๊ฒฐ) QueryDSL ๋ค์ดํฐ๋ธ SQL JDBC API ์ง์ ์ฌ์ฉ, MyBatis, SpringJdbcTemplate ๊ณผ ํจ๊ป ์ฌ์ฉ JPQL์ด๋? : ๊ฐ์ฒด์งํฅ SQL JPA๋ SQL์ ์ถ์ํํ JPQL์ด๋ผ๋ ๊ฐ์ฒด ์งํฅ ์ฟผ๋ฆฌ ์ธ์ด(ํ
์ด๋ธ์ด ์๋ ๊ฐ์ฒด๋ฅผ ๋์์ผ๋ก ๊ฒ์)๋ฅผ ์ ๊ณต SQL๊ณผ ๋ฌธ๋ฒ ์ ์ฌ, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN ์ง์ SQL์ ์ถ์ํํด์ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค SQL์ ์์กดX JPQL์ ๊ฒฐ๊ตญ SQL๋ก ๋ณํ๋๋ค ํ๋ก์ ์
(SELECT) SELECT m FROM Member m : ์ํฐํฐ ํ๋ก์ ์
๊ฒฐ๊ณผ๋ก ๋์จ ์ฌ๋ฌ๊ฐ์ ์ํฐํฐ๊ฐ ์ ๋ถ ์์์ฑ ์ปจํ
์คํธ์์ ๊ด๋ฆฌ๊ฐ ๋๋ค ์๋ ์ฝ๋๋ฅผ ๋ณด๋ฉด up..