์คํ๋ง ๋ฐ์ดํฐ JPA(16)
-
[QueryDSL] fetchResults(), fetchCount() Deprecated
์์ ๋ก ์ด ์ฝ๋๋ฅผ ๋ณด๋ฉด fetchResults๊ฐ Deprecated๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. Querydsl์ fetchCount(), fetchResults()๋ ๊ฐ๋ฐ์๊ฐ ์์ฑํ select ์ฟผ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก count ์ฟผ๋ฆฌ๋ฅผ ๋ด๋ถ์์ ๋ง๋ค์ด์ ์คํํ๋ ๋ฐฉ์์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๊ธฐ๋ฅ์ select ๊ตฌ๋ฌธ์ ๋จ์ํ count ์ฒ๋ฆฌํ๋ ์ฉ๋๋ก ๋ฐ๊พธ๋ ์ ๋์ด๊ธฐ ๋๋ฌธ์ ๋จ์ํ ์ฟผ๋ฆฌ์์๋ ์ ๋์ํ์ง๋ง, ๋ณต์กํ ์ฟผ๋ฆฌ์์๋ ์ ๋๋ก ๋์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ Querydsl์ ํฅํ fetchCount(), fetchResulsts() ๋ฅผ ์ง์ํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ทผ๋ฐ Querydsl์ ๋ณํ๊ฐ ๋น ๋ฅธํธ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋น์ฅ ํด๋น ๊ธฐ๋ฅ์ ์ ๊ฑฐํ์ง๋ ์์ ๊ฒ์ด๋ค. ๐ count ์ฟผ๋ฆฌ๊ฐ ํ์ํ๋ค๋ผ๋ฉด ๋ณ๋๋ก ์์ฑํด์ผ ํ๋ค. ์ ..
2022.10.18 -
[QueryDSL] 7. ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์ ๊ณตํ๋ Querydsl ๊ธฐ๋ฅ
https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84/dashboard ์ค์ ! Querydsl - ์ธํ๋ฐ | ๊ฐ์ Querydsl์ ๊ธฐ์ด๋ถํฐ ์ค๋ฌด ํ์ฉ๊น์ง, ํ๋ฒ์ ํด๊ฒฐํด๋ณด์ธ์!, - ๊ฐ์ ์๊ฐ | ์ธํ๋ฐ... www.inflearn.com ํด๋น ๊ฐ์๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ๐๐๐ฅฐ โ ์ด๋ฒ ๊ฐ์์์๋ ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์ ๊ณตํ๋ Querydsl ๊ธฐ๋ฅ์ ๋ํด์ ์๊ฐํ๋๋ฐ ์ฌ๊ธฐ์ ์๊ฐํ๋ ๊ธฐ๋ฅ๋ค์ ๋จ์ํ ๊ฒฝ์ฐ์๋ ํธํ์ง๋ง ์ ์ฝ์ด ์ปค์ ๋ณต์กํ ์ค๋ฌด ํ๊ฒฝ์์ ์ฌ์ฉํ๊ธฐ์๋ ๋ง์ด ๋ถ์กฑํ ํธ์ด๋ผ๊ณ ํ๋ค. ๊ทธ๋ผ์๋ ์ผ๋จ ์คํ๋ง ๋ฐ์ดํฐ์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ ์๊ฐํ๊ณ ์ ๋ถ์กฑํ์ง ์ค๋ช ํด์ค๋ค๊ณ ํ๋ค. 1๏ธโฃ ์ธํฐํ์ด์ค ์ง์ - QuerydslPred..
2022.10.18 -
[QueryDSL] 6. ์ค๋ฌด ํ์ฉ - ์คํ๋ง ๋ฐ์ดํฐ JPA์ QueryDSL
https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84/dashboard ์ค์ ! Querydsl - ์ธํ๋ฐ | ๊ฐ์ Querydsl์ ๊ธฐ์ด๋ถํฐ ์ค๋ฌด ํ์ฉ๊น์ง, ํ๋ฒ์ ํด๊ฒฐํด๋ณด์ธ์!, - ๊ฐ์ ์๊ฐ | ์ธํ๋ฐ... www.inflearn.com ํด๋น ๊ฐ์๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ๐โญ 1๏ธโฃ ์คํ๋ง ๋ฐ์ดํฐ JPA ๋ฆฌํฌ์งํ ๋ฆฌ ๋ณ๊ฒฝ https://hyejin.tistory.com/m/828 [QueryDSL] 5. ์ค๋ฌด ํ์ฉ - ์์ JPA์ QueryDSL 1๏ธโฃ ์์ JPA ๋ฆฌํฌ์งํ ๋ฆฌ์ Querydsl - ์์ JPA๋ฆฌํฌ์งํ ๋ฆฌ MemberJpaRepository ์คํ๋ง ๋ฐ์ดํฐ JPA ์์ด ์์ํ JPA ๋ง์ ์ฌ์ฉํ ๋ฆฌํฌ์งํ ๋ฆฌ์ด๋ค. ์ฐธ๊ณ ๋ก findById..
2022.10.17 -
[QueryDSL] 5. ์ค๋ฌด ํ์ฉ - ์์ JPA์ QueryDSL
1๏ธโฃ ์์ JPA ๋ฆฌํฌ์งํ ๋ฆฌ์ Querydsl - ์์ JPA๋ฆฌํฌ์งํ ๋ฆฌ MemberJpaRepository ์คํ๋ง ๋ฐ์ดํฐ JPA ์์ด ์์ํ JPA ๋ง์ ์ฌ์ฉํ ๋ฆฌํฌ์งํ ๋ฆฌ์ด๋ค. ์ฐธ๊ณ ๋ก findByIdํ ๋ ๋ฆฌํดํ์ ์ Optional๋ก ์คฌ๋๋ฐ ์ด์ ๋ id๋ก ์กฐํ๋ฅผ ํ์ ๋, ์ด์ ํด๋นํ๋ ํ์์ด ์์ ์๋ ์๊ธฐ ๋๋ฌธ์ Optional๋ก ํ๋ฒ ๊ฐ์ธ์ ๋ฆฌํดํด์คฌ๋ค. - ์์ JPA๋ฆฌํฌ์งํ ๋ฆฌ ํ ์คํธ -> ์์์ ๋ง๋ MemberJpaRepository๊ฐ ๋ฌธ์ ์์ด ์ ๋์๊ฐ๋์ง ๋จ์ํ ํ์ธํ๊ธฐ ์ํ ํ ์คํธ์ด๋ค. (ํ ์คํธ ๊ฒฐ๊ณผ๋ ๋น์ฐํ ์ฑ๊ณต) 2๏ธโฃ Querydsl ์ฌ์ฉ - ์์ JPA๋ฆฌํฌ์งํ ๋ฆฌ : Querydsl ์ถ๊ฐ findAll()๊ณผ findByUsername()์ ๋ํด์ Querydsl์ง ์ฝ๋์ด๋ค. (ํ์คํ..
2022.10.12 -
[QueryDSL] 4. ์ค๊ธ ๋ฌธ๋ฒ
https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84/dashboard ์ค์ ! Querydsl - ์ธํ๋ฐ | ๊ฐ์ Querydsl์ ๊ธฐ์ด๋ถํฐ ์ค๋ฌด ํ์ฉ๊น์ง, ํ๋ฒ์ ํด๊ฒฐํด๋ณด์ธ์!, - ๊ฐ์ ์๊ฐ | ์ธํ๋ฐ... www.inflearn.com ์ด ๊ฐ์๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ๐ 1๏ธโฃ ํ๋ก์ ์ ๊ฒฐ๊ณผ ๋ฐํ - ๊ธฐ๋ณธ ํ๋ก์ ์ : select ๋์ ์ง์ - ํ๋ก์ ์ ๋์์ด ํ๋์ธ ๊ฒฝ์ฐ ํ๋ก์ ์ ๋์์ด ํ๋๋ฉด ํ์ ์ ๋ช ํํ๊ฒ ์ง์ ํ ์ ์์. ํ๋ก์ ์ ๋์์ด ๋ ์ด์์ด๋ฉด ํํ์ด๋ DTO๋ก ์กฐํ - ํ๋ก์ ์ ๋์์ด ๋ ์ด์์ธ ๊ฒฝ์ฐ : ํํ ์กฐํ -> ํํ ์กฐํ๋ ํ๋ก์ ์ ๋์์ด ๋ ์ด์์ผ ๋ ์ฌ์ฉํ๋ค. ๐ค ์ฐธ๊ณ ๋ก Tuple์ ๋ฆฌํฌ์งํ ๋ฆฌ ์์์๋ง ํ์ํ ๋ ์ฌ..
2022.10.11 -
[QueryDSL] 3. ๊ธฐ๋ณธ ๋ฌธ๋ฒ(2) (์๋ธ์ฟผ๋ฆฌ, ์์, ๋ฌธ์ ๋ํ๊ธฐ)
https://hyejin.tistory.com/807 [QueryDSL] 3. ๊ธฐ๋ณธ ๋ฌธ๋ฒ(1) Q-Type, ๊ฒ์ ์กฐ๊ฑด ์ฟผ๋ฆฌ, ๊ฒฐ๊ณผ ์กฐํ, ์ ๋ ฌ, ํ์ด์ง, ์งํฉ, ์กฐ์ธ(ํ์น ์กฐ์ธ, on 1๏ธโฃ JPQL vs Querydsl ํ ์คํธ ๊ธฐ๋ณธ ์ฝ๋ QuerydslBasicTest -> ํ ์คํธ๋ฅผ ์ํด์ ๊ณ์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๊ณ ํ๊ธฐ ๊ท์ฐฎ์ผ๋๊น @BeforeEach ์ด๋ ธํ ์ด์ ์ ํตํด์ ๋ฏธ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๋ฉ๋ ๋ member์ Team ๋ฐ. hyejin.tistory.com 1๏ธโฃ ์๋ธ ์ฟผ๋ฆฌ : com.querydsl.jpa.JPAExpression ์ฌ์ฉ - ์๋ธ ์ฟผ๋ฆฌ eq ์ฌ์ฉ where ์ ์์ ์๋ธ ์ฟผ๋ฆฌ๋ก ์ฌ์ฉํ๋๋ฐ ์ด๋ JPAExpression์ static import ํด์ ์ฌ์ฉํ ์ ์๋ค. - ์๋ธ..
2022.10.11 -
[QueryDSL] 3. ๊ธฐ๋ณธ ๋ฌธ๋ฒ(1) Q-Type, ๊ฒ์ ์กฐ๊ฑด ์ฟผ๋ฆฌ, ๊ฒฐ๊ณผ ์กฐํ, ์ ๋ ฌ, ํ์ด์ง, ์งํฉ, ์กฐ์ธ(ํ์น ์กฐ์ธ, on์ , ๊ธฐ๋ณธ ์กฐ์ธ)
1๏ธโฃ JPQL vs Querydsl ํ ์คํธ ๊ธฐ๋ณธ ์ฝ๋ QuerydslBasicTest -> ํ ์คํธ๋ฅผ ์ํด์ ๊ณ์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๊ณ ํ๊ธฐ ๊ท์ฐฎ์ผ๋๊น @BeforeEach ์ด๋ ธํ ์ด์ ์ ํตํด์ ๋ฏธ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๋ฉ๋ ๋ member์ Team ๋ฐ์ดํฐ ๋ช๊ฐ๋ฅผ ๋ฃ์ด๋๋๋ก ํ๋ค. Querydsl vs JPQL -> username์ด member1์ธ member๋ฅผ ์กฐํํ๋ ์์ ์ด๋ค. ๊ทธ๋ฆฌ๊ณ jpql์ ์คํํด์ ์กฐํํด์จ findMember์ ์ด๋ฆ์ด member1์ธ์ง ํ ์คํธ (-> jpql๊ณผ sql์ด ๊ฐ์ด ๋์ค๊ณ ์์) -> JPQL๊ณผ ์์ ๋ ๊ฐ๋ค. EntityManager๋ก JpaQueryFactory๋ฅผ ์์ฑํด์ค๋ค. QueryDSL๋ ๋ญ ํน๋ณํ ๊ธฐ๋ฅ์ด ์๋ ๊ฒ์ด ์๋๋ผ JPQL ๋น๋์ญํ ์ ํ๋ ๊ฒ ๋ฟ์ด๋ค. ๐ฅฐ..
2022.10.07 -
[QueryDSL] 2. ์์ ๋๋ฉ์ธ ๋ชจ๋ธ
https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84/dashboard ์ค์ ! Querydsl - ์ธํ๋ฐ | ๊ฐ์ Querydsl์ ๊ธฐ์ด๋ถํฐ ์ค๋ฌด ํ์ฉ๊น์ง, ํ๋ฒ์ ํด๊ฒฐํด๋ณด์ธ์!, - ๊ฐ์ ์๊ฐ | ์ธํ๋ฐ... www.inflearn.com ์ธํ๋ฐ - ์ค์ ! QueryDSL ๊ฐ์๋ฅผ ๋ฃ๊ณ , ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ์ต๋๋ค. ๐ https://hyejin.tistory.com/740?category=1091560 [์คํ๋ง ๋ฐ์ดํฐ JPA] 2. ์์ ๋๋ฉ์ธ ๋ชจ๋ธ 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/da..
2022.10.06 -
[QueryDSL] 1. QueryDSL ์๊ฐ
https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84/dashboard ์ค์ ! Querydsl - ์ธํ๋ฐ | ๊ฐ์ Querydsl์ ๊ธฐ์ด๋ถํฐ ์ค๋ฌด ํ์ฉ๊น์ง, ํ๋ฒ์ ํด๊ฒฐํด๋ณด์ธ์!, - ๊ฐ์ ์๊ฐ | ์ธํ๋ฐ... www.inflearn.com ์ธํ๋ฐ - ์ค์ ! QueryDSL ๊ฐ์๋ฅผ ๋ฃ๊ณ , ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ์ต๋๋ค. ๐ 1๏ธโฃ ํ๋ก์ ํธ ํ๊ฒฝ ์ค์ https://start.spring.io/ ์คํ๋ง ๋ถํธ ์คํํฐ์ ๋ค์ด๊ฐ์ ํ๋ก์ ํธ๋ฅผ ์์ฑํด ์ค ๊ฒ์ด๋ค. ์ฌ์ฉ ๊ธฐ๋ฅ: spring web, spring data jpa, h2 database, lombok SpringBoot version: 2.7.4 (๊ฐ์์์๋ 2.2.2 ๋ฒ์ ์ ์ฌ์ฉํ์ง๋ง ์๊ฐ์ด ๋ง์ด ์ง๋..
2022.10.05 -
[์คํ๋ง ๋ฐ์ดํฐ JPA] 7. ๋๋จธ์ง ๊ธฐ๋ฅ๋ค
์ค๋ ๊ฐ์๋ค์ ๋ด์ฉ์ ์ค๋ฌด์์๋ ์~~~์ฒญ ์์ฃผ ์ฌ์ฉํ์ง๋ ์์ง๋ง ๊ทธ๋๋ ์๋ ๊ธฐ๋ฅ๋ค์ด๊ณ , ์ ์ฌ์ฉํ๋ฉด ๋๋ฆ ์ ์ฉํ๊ฒ ์ธ ์ ๋ ์๋ค๊ณ ํด์ ์๊ฐํ๋ ์น์ ์ด๋ผ๊ณ ํ๋ค. 1๏ธโฃ Specifications (๋ช ์ธ) : ์ฑ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ (Domain Driven Design)๋ SPECIFICATION(๋ช ์ธ) ๋ผ๋ ๊ฐ๋ ์ ์๊ฐํ๋๋ฐ ์คํ๋ง ๋ฐ์ดํฐ JPA ๋ JPA Criteria๋ฅผ ํ์ฉํด์ ์ด ๊ฐ๋ ์ ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํ๋ค. (์ผ๋จ JPA Criteria๋ฅผ ํ์ฉํด์ ์ง์ํ๋ค๋ ๊ฒ ์์ฒด๋ถํฐ๊ฐ ์ค๋ฌด์์ ์ฌ์ฉํ๊ธฐ์ ํ๋ค๋ค๋ ์๊ธฐ๋ค.. ) ์ ์ด Predicate - ์ฐธ ๋๋ ๊ฑฐ์ง์ผ๋ก ํ๊ฐ - AND OR ๊ฐ์ ์ฐ์ฐ์๋ก ์กฐํฉํด์ ๋ค์ํ ๊ฒ์์กฐ๊ฑด์ ์ฝ๊ฒ ์์ฑ(์ปดํฌ์งํธ ํจํด) - ์) ๊ฒ์ ์กฐ๊ฑด ํ๋ํ๋ - ์คํ..
2022.10.04 -
[์คํ๋ง ๋ฐ์ดํฐ JPA] 6. ์คํ๋ง ๋ฐ์ดํฐ JPA ๋ถ์
1๏ธโฃ ์คํ๋ง ๋ฐ์ดํฐ JPA ๊ตฌํ์ฒด ๋ถ์ org.springframework.data.jpa.repository.support.SimpleJpaRepository -> ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์ ๊ณตํ๋ ๊ณตํต ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด SimpleJpaRepository @Repository : ์ด ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ฉด ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋์ด ์ปดํฌ๋ํธ ์ค์บ์ ๋์์ด ๋๊ณ , JPA ์์ธ๋ฅผ ์คํ๋ง์ด ์ถ์ํํ ์์ธ๋ก ๋ณํํด์ฃผ๋ ์ญํ ๋ ํ๋ค. -> ์คํ๋ง์ด ๊ฐ์กฐํ๋ ํฐ ์ฅ์ ์ค ํ๋๋ผ๊ณ ํ ์ ์๋๋ฐ JPA ๋ฅผ ์ฌ์ฉํ๋ค๊ฐ ์ด๋ค ์ด์ ๋ก JDBC ๋ฑ์ผ๋ก ๋ณ๊ฒฝํ๋ค๊ณ ํด๋ ์์ธ ๊ฐ์๊ฑธ ์คํ๋ง ๊ด๋ จ ์์ธ๋ก ์์์ ๋ณํํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ตฌํ์ฒด๊ฐ ๋ฐ๋์ด๋ ๋ก์ง์ ๋์ผํ๊ฒ ๋์๊ฐ๋๋ก ์ค๊ณ๋์ด์๋ค. @Transactional : ํธ๋์ญ์ ์ ..
2022.10.03 -
[์คํ๋ง ๋ฐ์ดํฐ JPA] 5. ํ์ฅ ๊ธฐ๋ฅ
1๏ธโฃ ์ฌ์ฉ์ ์ ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ตฌํ ์คํ๋ง ๋ฐ์ดํฐ JPA ๋ฆฌํฌ์งํ ๋ฆฌ๋ ์ธํฐํ์ด์ค๋ง ์ ์ํ๊ณ ๊ตฌํ์ฒด๋ ์คํ๋ง์ด ์๋ ์์ฑํ๋ค. ๋ฐ๋ผ์ ์ด์ ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ง์ ๊ตฌํํ๋ ค๊ณ ํ๋ฉด ๊ตฌํํด์ผ ํ๋ ๊ธฐ๋ฅ๋ค์ด ๋๋ฌด ๋ง์ ๋ค ๊ตฌํํ๊ธฐ๊ฐ ํ๋ค๋ค. ๋ค์ํ ์ด์ ๋ก ์ธํฐํ์ด์ค์ ๋ฉ์๋๋ฅผ ์ง์ ๊ตฌํํ๊ณ ์ถ๋ค๋ฉด..?? - JPA ์ง์ ์ฌ์ฉ(EntityManager) - ์คํ๋ง JDBC Template ์ฌ์ฉ - MyBatis ์ฌ์ฉ - ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ์ง์ ์ฌ์ฉ ๋ฑ๋ฑ.. - Querydsl ์ฌ์ฉ ์ฌ์ฉ์ ์ ์ ์ธํฐํ์ด์ค MemberRepositoryCustom ์ฌ์ฉ์ ์ ์ ์ธํฐํ์ด์ค ๊ตฌํ ํด๋์ค MemberRepositoryImpl ์ฌ์ฉ์ ์ ์ ์ธํฐํ์ด์ค ์์ MemberRepository ๊ทธ๋ฆฌ๊ณ ์ด..
2022.09.29