๐โ๏ธ ๊ณ์ํด์ ์
๋ฐ์ดํธ ํ๊ธฐ ๐โ๏ธ 1. ๊ณต์๋ฌธ์ 2. ์ ์ฌ์ฉํ ๊น? 3. ๋์๋ฐฉ์ 4. ์์กด์ฑ 5. Mapper Inteface ์์ฑ 6. Mapper ๊ตฌํ์ฒด ์ดํด๋ณด๊ธฐ ๊ณต์๋ฌธ์ https://mapstruct.org/documentation/stable/reference/pdf/mapstruct-reference-guide.pdf MapStruct ์ ์ฌ์ฉํ ๊น? ๋ณดํต DB์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ณ ์๋น์ค๋จ์์ ๋ก์ง์ ์ค๊ณ ํ๊ธฐ ์ํด Entity -> Dto , Dto -> Entity ์์
์ ํ๊ฒ ๋๋๋ฐ ์ด๋ฌํ Mapping ์์
์ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ง์ด ์กด์ฌํ๋ค ๊ทธ์ค ์๋์ ๋งํฌ๋ฅผ ํ์ธํด๋ณด๋ฉด MapStruct ํผํฌ๋จผ์ค๊ฐ ๋น ๋ฅธ ๊ฒ์ ํ์ธํ ์ ์๋ค. https://www.baeldung.com/j..
JPA
๐โ๏ธ ๊ณ์ํด์ ์
๋ฐ์ดํธ ํ๊ธฐ ๐โ๏ธ ๋ง์ง๋ง ์
๋ฐ์ดํธ 2022/03/29 1. Querydsl ์ ์ ์ฌ์ฉํ ๊น? 2. ์๋๋ฐฉ์? 3. ์์กด์ฑ 4. Repository ๊ตฌ์กฐ 5. Projection ์ ๋ํ ๊ณ ์ฐฐ ... 6. ๋์ ์ฟผ๋ฆฌ (BooleanBuilder) 7. ExpressionUtils 8. ์ ๋ ฌ ํ์
์ ๋ฐ๋ฅธ ์ ๋ ฌ ์ฒ๋ฆฌ Querydsl ์ ์ ์ฌ์ฉํ ๊น? JPA ๋ฅผ ์ฌ์ฉํ๋ฉด์ (@Query ํฌํจ) ์กฐํ ๊ธฐ๋ฅ์ ๋ํ ํ๊ณ๊ฐ ์๋ค. ๋์ ์ธ ์ฟผ๋ฆฌ์ธ ๊ฒฝ์ฐ์ธ๋ฐ ์๋ฅผ ๋ค์ด ์ฃผ๋ฌธ ํ์ด์ง๋ฅผ ๊ฒ์ ํ๋ค๊ณ ํ์ ๋ ์นดํ
๊ณ ๋ฆฌ or ์ํ๋ช
or ๊ธฐ์
๋ช
๋ฑ๋ฑ... ์ผ๋ก ๊ฒ์ ์กฐ๊ฑด์ด ๋ฌ๋ผ์ง๋ ๋ถ๋ถ์ด๋ค. ๊ทธ๋์ ์ฌ์ฉํ๊ฒ ๋ ๊ฒ์ด ๋ฐ๋ก Querydsl ํ๋ ์์ํฌ ์ด๋ค. - ํ์
์ฒดํฌ๊ฐ ๋ฐ๋ก ๊ฐ๋ฅํ๋ค - ์๋ฐ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ..
์ฐ๊ด๊ด๊ณ ๋งคํ์ ๊ณ ๋ ค์ฌํญ 3๊ฐ์ง 1. ๋ค์ค์ฑ 2. ๋จ๋ฐฉํฅ, ์๋ฐฉํฅ 3. ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ - ๊ฐ์ฒด ์๋ฐฉํฅ ๊ด๊ณ๋ ์ฐธ์กฐ๊ฐ 2๊ตฐ๋ฐ ์๊ธฐ ๋๋ฌธ์ ๋์ค ํ
์ด๋ธ์ ์ธ๋ ํค๋ฅผ ๊ด๋ฆฌํ ๊ณณ์ ์ง์ ํด์ผํจ - ์ธ๋ ํค๋ฅผ ๊ด๋ฆฌํ๋ ์ฐธ์กฐ - ์ฃผ์ธ์ ๋ฐ๋ํธ : ์ธ๋ ํค์ ์ํฅ์ ์ฃผ์ง ์์, ๋จ์ ์กฐํ ๋ค๋์ผ[N:1] ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํจ ๋จ๋ฐํฅ ์๋์ ๊ฐ์ด [N]์์ ์ธ๋ ํค๋ฅผ ๊ด๋ฆฌํ๊ณ Team์ ์กฐํ ํ๊ณ ์ถ๊ฐํ ์ ์๋ค. Team์ ์๋ ์กฐํํ์ง ๋ชปํจ -> Team์์ Member์ ์กฐํํ๋์ผ์ด ๋น๋ฒํ๋ค๊ณ ํ๋ฉด -> ์๋ฐํฅ ์ผ๋ก ๋งคํํด์ฃผ๋๊ฒ ์ข์. ์๋ฐํฅ ๋จ๋ฐํฅ์์ TEAM์ด MEMBER๋ฅผ mapped by ๋ฅผ ์ถ๊ฐํ์ฌ MEMBER๋ฅผ ์กฐํํ ์ ์๋ค. (์ฝ๊ธฐ ์ ์ฉ) ์ผ๋๋ค[1:N] 1์ด ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ด๋ค. ๋จ๋ฐฉํฅ TEAM ์์..
๊ต์ก๊ณผ์ ๋์ ์ธ์ ๋ง๋ค์ด์ก๋์ง, ์ธ์ ์์ ๋์๋์ง์ ๋ฐ๋ฅธ ์ ์ง๋ณด์ ์ค์์ฑ์ ๋ฐฐ์ฐ์ง ๋ชปํ๋ค. ์ด์ ๋ชจ๋ธ๋งํ ๋ ๊ณ ๋ คํด์ ์ง์ผ๊ฒ ๊ตฐ... ๊ฐ์ ๋ด์ฉ์ธ๋ฐ ๋งค๋ฒ DB์ insert/update์ ํ๊ธฐ์๋ ์ฝ๋๊ฐ ์ฌ๊ธฐ์ ๊ธฐ ๋ค์ด๊ฐ๊ฒ ๋๋๊น ์์ฑ๋ ๋ ๊ฐ์ด ์์ฑ๋๋ฉด ํธ๋ฆฌํ๋ค! domain ํด๋์ BaseTimeEntityํด๋์ค๋ฅผ ๋ง๋ค์ด์ฃผ๊ณ ๋ชจ๋ Entity์ ์์ ํด๋์ค๊ฐ ๋๊ฒ ํ๋ฉด ๋๋ค. 1. @MappedSpuerclass ๋ฅผ ์ด์ฉํ๋ฉด JPA Entityํด๋์ค๋ค์ด BaseTimeEntity๋ฅผ ์์ํ ๊ฒฝ์ฐ ํ๋๋ค๋ ์ปฌ๋ผ์ผ๋ก ์ธ์ํ๋๋ก ํ๋ค. 2. @EntityListeners(AuditingEntityListener.class)๋ก ํด๋น ํด๋์ค์ Auditing๊ธฐ๋ฅ์ ํฌํจํ๋ค. 3. @CreatedDate priva..