์ค๋ ๊ณต๋ถํ ๋ด์ฉ
- [์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ] 15์ฅ ๊ณ ๊ธ ์ฃผ์ ์ ์ฑ๋ฅ ์ต์ ํ - ์์ธ ์ฒ๋ฆฌ ๊ณต๋ถ
- ๋ชจ์ฌ์ ๊ฐ์ ์ฝ๋ฉ ๋ธ๋ก๊ทธ ๊ฐ์ค(์ฌ์ค ์ด๊ฑด ๊ณต๋ถ๋ ์๋๊ณ .. ๊ทธ๋๋ ์๊ฐ ๋ง์ด ์ก์๋จนํ๋ค)
- [์ค์ QueryDSL] ๊ธฐ๋ณธ ๋ฌธ๋ฒ ๋ฃ๊ธฐ
- [Modern Java in Action] ๋ฉ์๋ ์ฐธ์กฐ์๋ถํฐ ๊ณต๋ถ
- [์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ฝ๋ฉ ํ ์คํธ๋ค] BFS/DFS ๊ณต๋ถ - ์๋ฃ์ ์ผ๋ ค ๋จน๊ธฐ ๋ฌธ์ ํ๊ธฐ
- [์ค๋ธ์ ํธ] 8์ฅ๊น์ง ์ฝ๊ธฐ
๐ญ๋๋ ์ & ๋ฐฐ์ด ์
- ์ 15์ฅ์ ์ฌ์ค ํ๋ฒ ๋ค ์ฝ๊ธด ํ๋๋ฐ, ์ดํ ๋ด์ฉ๋ค์ด ๋๋ฌด ์ด๋ ค์์ ์์ง ๊ฑฐ๊ธฐ๊น์ง ํ ๋จ๊ณ๋ ์๋ ๊ฒ ๊ฐ๋ค. ์กฐ๊ธ ๋ค๋ฅธ ๊ฒ๋ค๋ ๊ณต๋ถ๋ฅผ ํ ๋ค์์ ๋ค์ ๋์์์ ๊น์ํ ๊ณต๋ถํ ๋ ์ ๋๋ก ํ์ธํด์ผ ํ ๊ฒ ๊ฐ๋ค.
- ํ์คํ QueryDSL์ ๊ฐํธํ๊ณ ๋ณ๋ก ์ด๋ ต์ง ์์๋ค. ๊ทธ๋ ๊ธด ํ๋ฐ ์ง์ง ๋๋ฌด ํ๋ค์ด์... ๊ธฐ๋ณธ ๋ฌธ๋ฒ๊น์ง๋ง ๋ดค๋ค. ์ ์ ํฅ๋ก๋์ด ์ ํ๋ธ์ ์ฌ๋ ค์ฃผ์ ์ฑ๋ฅ ์ต์ ํํ๊ธฐ ๋ถ๋ถ์ด ์์๋ ๊ฑฐ ๊ฐ์๋ฐ ๋ค์์ ์๊ฐ์ด ๋๋ฉด ๋ค์ ์ฐพ์๋ด์ผ๊ฒ ๋ค. [๋งํฌ](https://www.youtube.com/watch?v=zMAX7g6rO_Y)
- ์ bfs/dfs ์ง์ง ๋๋ฌด ์ด๋ ต๋ค..ใ ใ ใ ์์ฒญ ๊ณ ๋ฏผํ๋ค ๊ฒฐ๊ตญ ๋ต ๋ณด๊ณ ,, ๋ต ๋ด๋ bfs๋ก๋ ๋ ๋ชปํ๊ฒ ๊ณ ..ใ ํ๋์ ์ต์ํด์ง๋๊น์ง ์ด ๋ฌธ์ ๋ง ๊ณ์ ํ์ด๋ณด๋ คํ๋ค. ๊ทธ๋์ ์์ง ํฌ์คํ ์ ์ ํ๋ค.
- ๋ฉ์๋ ์ฐธ์กฐ์๊น์ง ๊ณต๋ถํ๋๋ฐ, ๋ค์ ํ๋ฒ ์ญ ์ฝ์ด๋ณด๋ฉด์ ๊ฐ๋ ์ ํ์คํ๊ฒ ์ก๊ณ ๊ฐ์ผ๊ฒ ๋ค. ๋ชจ๋ ์๋ฐ ์ธ ์ก์ ๋, ํ๋ฒ ๋ค ์ฝ๊ณ ์ด๋์ ๋ ์ต์ํด ์ง ํ, ์ ๋ฆฌํ์ฌ ํฌ์คํ ํด์ผ๊ฒ ๋ค.
- [์ค๋ธ์ ํธ]์ ๊ฒฝ์ฐ, ๊ฐ์๋ก ๋ด์ฉ์ด ์ด๋ ค์์ง๋ ๋๋์ด๋ผ ์ญ ์ฝ๊ณ ๋ ํ์ ๋ค์ ํ๋ฒ ๊ผผ๊ผผํ ์ฝ์ด๋ณด๋ ค ํ๋ค. ์ง๊ธ์ ์ผ๋จ ๋๋์ ์กฐ๊ธ ํ์ ํ๋ ๋๋์ผ๋ก 1ํ๋ ์ ํ๋ ค ํ๋ค. (์ฌ์ค ๋์๊ฒ ์์ง์ ์กฐ๊ธ ์ด๋ ต๋ฌ๊น..ใ ใ )
๐ฅ๋ด์ผ ๊ณต๋ถํ ๋ด์ฉ
- [์ค์ QueryDSL] ๋ชจ๋ ๋ฃ๊ธฐ
- [์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ฝ๋ฉ ํ ์คํธ๋ค] bfs/dfs ๋ฌธ์ ๋ค์ ํ์ด๋ณด๊ธฐ
- [Modern Java in Action] ๋ฉ์๋ ์ฐธ์กฐ์๋ถํฐ ๋ณต์ตํ๊ธฐ
- [์ค๋ธ์ ํธ] 9์ฅ ์ฝ๊ธฐ
์ค๋ ๊ณต๋ถํ ๋ด์ฉ ํฌ์คํ
[JPA] ๊ณ ๊ธ ์ฃผ์ - ์์ธ ์ฒ๋ฆฌ
JPA ํ์ค ์์ธ ์ฒ๋ฆฌ JPA์ ํ์ค ์์ธ๋ค์ javax.persistence.PersistenceException์ ์์ ํด๋์ค๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์์ธ ํด๋์ค๋ RuntimeException์ ์์์ด๋ค. JPA ํ์ค ์์ธ๋ ํฌ๊ฒ ๋ณด๋ฉด 2๊ฐ์ง๋ก ๋๋ ์ ์๋ค. ํธ..
ttl-blog.tistory.com
[QueryDSL] Q-Type
Qํด๋์ค ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ QMember qMember = new QMember("m"); //alias(๋ณ์นญ) ์ง์ ์ง์ -> JPQL์์ Member m ์ผ๋ก ์คํ QMember qMember = QMember.member; //๊ธฐ๋ณธ ์ธ์คํด์ค ์ฌ์ฉ ํน์ ๊ธฐ๋ณธ ์ธ..
ttl-blog.tistory.com
[QueryDSL] ๊ฒ์ ์กฐ๊ฑด ์ฟผ๋ฆฌ
QueryDSL์ ๊ธฐ๋ณธ ๊ฒ์ ์กฐ๊ฑด ์ฟผ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ์ธ ์ ์๋ค. @Autowired EntityManager em; JPAQueryFactory queryFactory; @BeforeEach public void before() { queryFactory = new JPAQueryFactory(em); } @Test..
ttl-blog.tistory.com
[QueryDSL] ๊ฒฐ๊ณผ ์กฐํ
๊ฒฐ๊ณผ ์กฐํ ๋ฉ์๋ fetch() : ๋ฆฌ์คํธ ์กฐํ, ๋ฐ์ดํฐ ์์ผ๋ฉด ๋น ๋ฆฌ์คํธ ๋ฐํ fetchOne() : ๋จ๊ฑด ์กฐํ ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉด : null, ๊ฒฐ๊ณผ๊ฐ ๋ ์ด์์ด๋ฉด : com.querydsl.core.NonUniqueResultException fetchFirst() : limit..
ttl-blog.tistory.com
[QueryDSL] ์ ๋ ฌ
์ ๋ ฌ์ orderBy()๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์๋ค. /** * ํ์ ์ ๋ ฌ ์์ * 1. ํ์ ๋์ด ๋ด๋ฆผ์ฐจ์(desc) * 2. ํ์ ์ด๋ฆ ์ฌ๋ฆผ์ฐจ์(asc) * ๋จ 2์์ ํ์ ์ด๋ฆ์ด ์์ผ๋ฉด ๋ง์ง๋ง์ ์ถ๋ ฅ(nulls last) */ @Test p..
ttl-blog.tistory.com
[QueryDSL] ์งํฉ (count, sum, avg, max, min)
์งํฉ (count, sum, avg, max, min) QueryDSL์ count, sum, avg, max, min ๋ฅผ ์ ๊ณตํ๋ค. ์ฌ์ฉ /** * JPQL * select * COUNT(m), //ํ์์ * SUM(m.age), //๋์ด ํฉ * AVG(m.age), //ํ๊ท ๋์ด * MAX(m.age),..
ttl-blog.tistory.com
[QueryDSL] GroupBy
GroupBy ์ฌ์ฉ /** * ํ์ ์ด๋ฆ๊ณผ ๊ฐ ํ์ ํ๊ท ์ฐ๋ น์ ๊ตฌํด๋ผ. */ @Test public void group() throws Exception { List result = queryFactory .select(team.name, member.age.avg()) .from(member) .join(member...
ttl-blog.tistory.com
[QueryDSL] ์กฐ์ธ, ํ์น์กฐ์ธ
์กฐ์ธ ์กฐ์ธ์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ์ฒซ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ ์กฐ์ธ ๋์์ ์ง์ ํ๊ณ , ๋ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ ๋ณ์นญ(alias)์ผ๋ก ์ฌ์ฉํ QType์ ์ง์ ํ๋ฉด ๋๋ค. join(์กฐ์ธ ๋์, ๋ณ์นญ์ผ๋ก ์ฌ์ฉํ Qํ์ ) ์ฌ์ฉ์์ ์ผ๋ฐ ์กฐ
ttl-blog.tistory.com
[QueryDSL] ์๋ธ ์ฟผ๋ฆฌ
์๋ธ์ฟผ๋ฆฌ QueryDSL์์ ์๋ธ ์ฟผ๋ฆฌ๋ JPAExpressions ์ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ ์ ์๋ค. JPQL๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก from์ ์ ์๋ธ์ฟผ๋ฆฌ๋ ์ง์๋์ง ์๋๋ค. ๋จ ํ์ด๋ฒ๋ค์ดํธ ๊ตฌํ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด select์ ์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ
ttl-blog.tistory.com
[QueryDSL] CASE ๋ฌธ (+ CaseBuilder)
CASE๋ฌธ select, ์กฐ๊ฑด์ (where), orderBy ์์ ์ฌ์ฉํ ์ ์๋ค. ๋จ์ํ ์กฐ๊ฑด List result = queryFactory .select(member.age .when(10).then("์ด์ด") .when(20).then("์ค๋ฌด์ด") .otherwise("๊ธฐํ")) .from(member)..
ttl-blog.tistory.com
[QueryDSL] ์์, ๋ฌธ์ ๋ํ๊ธฐ (Expressions.constant, concat)
์์, ๋ฌธ์ ๋ํ๊ธฐ Expressions.constant(xxx) - ์์๊ฐ ํ์ํ ๊ฒฝ์ฐ์ ์ฌ์ฉ Tuple result = queryFactory .select(member.username, Expressions.constant("A")) .from(member) .fetchFirst(); ์ฐธ๊ณ : ์์ ๊ฐ์ด..
ttl-blog.tistory.com
GitHub - ShinDongHun1/ModernJavaInAction_Code: Code by studying Modern Java In Action
Code by studying Modern Java In Action. Contribute to ShinDongHun1/ModernJavaInAction_Code development by creating an account on GitHub.
github.com
'๐ณ TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] 2021-12-25 (0) | 2021.12.25 |
---|---|
[TIL] 2021-12-24 (0) | 2021.12.25 |
[TIL] 2021-12-22 (0) | 2021.12.23 |
[TIL] 2021-12-21 (0) | 2021.12.22 |
[TIL] 2021-12-20 (0) | 2021.12.20 |