JPA(16)
-
๊ฐ๋จํ Spring Boot Restful API Sample Project ๋ง๋ค์ด๋ณด๊ธฐ #2. ํ์๊ฐ์ ๊ตฌํํ๊ธฐ
https://hyejin.tistory.com/1295 ๊ฐ๋จํ Spring Boot Restful API Sample Project ๋ง๋ค์ด๋ณด๊ธฐ #1. Spring Security ์ค์ + CustomFilter ๋ง๋ค๊ธฐ โ ์ํ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ธฐ๋ก ๊ฒฐ์ ํ ์ด์ -> ์๊ฐ์ด ์กฐ๊ธ ์ฌ์ ๋ก์ด ์์ฆ, ๊ณง ๊ฐ๋ฐ ๋ค์ด๊ฐ๊ธฐ ์ ์ ๊ฐ๋จํ๊ฒ ์ํ ํ๋ก์ ํธ ๋ง๋ค๋ฉด์ ๊ฐ ์ก๊ณ ? ์๊ณ ์ถ์ด์! ๊ทธ๋ฆฌ๊ณ ๋ง๋ ๊น์ ์ค๋๋ง์ ํฐ์คํ ๋ฆฌ hyejin.tistory.com -> ์ด๋ฒ ๊ธ์ ํ์ ๊ฐ์ ๋ก์ง์ ๊ตฌํํ๋ ๊ธ๋ก, ์ํ๋ฆฌํฐ ์ค์ ๊ด๋ จ ๋ถ๋ถ์ ๋ฐ์ ๋งํฌ ํด๋ฆญํด์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค :) ๐ : ์๊ฐํด๋ณด๋ฉด ์คํ๋ง ์ํ๋ฆฌํฐ ์ค์ ๋ฐ ๋ก๊ทธ์ธ ๊ตฌํํ๊ธฐ ์ ์ ํ์๊ฐ์ ๋ก์ง์ ๋ง๋ค์์ด์ผ ํ๋ค.. ์๋ ํ์ ๊ฐ์ ์ ํด์ผ ํ์ ์ ๋ณด ์ ์ฅํ๊ณ , ๋ก๊ทธ..
2024.03.11 -
Spring REST Docs ๋ฅผ ์ฌ์ฉํด ๋ฌธ์ ์๋ํํ๋ ๋ฐฉ๋ฒ + ์ํ ํ๋ก์ ํธ ์์ฑ (Spring +JPA)
* ํน์๋ ๋ฐ๋ก ์ฝ๋๋ถํฐ ๋ณด๊ณ ์ถ์ ์ฌ๋๋ค์ -> " Spring REST Docs ๋ฅผ ์ด์ฉํ Sample Project " ๊ฒ์ ๋ ์ญ๊ณ 0๏ธโฃ Spring REST Docs ๋ ? : Spring MVC Test ๋๋ WebTestClient์ผ๋ก ์์ฑ๋ ์ค๋ํซ๊ณผ ์ง์ ์์ฑํ ๋ฌธ์๋ฅผ ๊ฒฐํฉํ์ฌ Restful ์๋น์ค๋ฅผ ๋ฌธ์ํํ๋ ๊ฒ์ด๋ค. https://docs.spring.io/spring-restdocs/docs/current/reference/htmlsingle/#introduction Spring REST Docs Document RESTful services by combining hand-written documentation with auto-generated snippets produced wi..
2024.02.27 -
[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] 6. ์คํ๋ง ๋ฐ์ดํฐ JPA ๋ถ์
1๏ธโฃ ์คํ๋ง ๋ฐ์ดํฐ JPA ๊ตฌํ์ฒด ๋ถ์ org.springframework.data.jpa.repository.support.SimpleJpaRepository -> ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์ ๊ณตํ๋ ๊ณตํต ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด SimpleJpaRepository @Repository : ์ด ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ฉด ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋์ด ์ปดํฌ๋ํธ ์ค์บ์ ๋์์ด ๋๊ณ , JPA ์์ธ๋ฅผ ์คํ๋ง์ด ์ถ์ํํ ์์ธ๋ก ๋ณํํด์ฃผ๋ ์ญํ ๋ ํ๋ค. -> ์คํ๋ง์ด ๊ฐ์กฐํ๋ ํฐ ์ฅ์ ์ค ํ๋๋ผ๊ณ ํ ์ ์๋๋ฐ JPA ๋ฅผ ์ฌ์ฉํ๋ค๊ฐ ์ด๋ค ์ด์ ๋ก JDBC ๋ฑ์ผ๋ก ๋ณ๊ฒฝํ๋ค๊ณ ํด๋ ์์ธ ๊ฐ์๊ฑธ ์คํ๋ง ๊ด๋ จ ์์ธ๋ก ์์์ ๋ณํํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ตฌํ์ฒด๊ฐ ๋ฐ๋์ด๋ ๋ก์ง์ ๋์ผํ๊ฒ ๋์๊ฐ๋๋ก ์ค๊ณ๋์ด์๋ค. @Transactional : ํธ๋์ญ์ ์ ..
2022.10.03