์ธํ๋ฐ(50)
-
์๋ธ๋ฆฟ ์ปจํ ์ด๋ ์ด๊ธฐํ, ์ ํ๋ฆฌ์ผ์ด์ ์ด๊ธฐํ
์๋ธ๋ฆฟ ์ปจํ ์ด๋ ์ด๊ธฐํ๋? (tistory.com) ์๋ธ๋ฆฟ ์ปจํ ์ด๋ ์ด๊ธฐํ๋? WAS๋ฅผ ์คํํ๋ ์์ ์ ํ์ํ ์ด๊ธฐํ ์์ ๋ค( ์๋น์ค์ ํ์ํ ํํฐ์ ์๋ธ๋ฆฟ์ ๋ฑ๋ก, ์คํ๋ง ์ปจํ ์ด๋ ์์ฑ, ๋์คํจ์ฒ ์๋ธ๋ฆฟ ๋ฑ๋ก ๋ฑ..) ์ด ์๋๋ฐ WAS๊ฐ ์ ๊ณตํ๋ ์ด๊ธฐํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด, WAS hyejin.tistory.com WAS ๋ฅผ ์คํํ๋ ์์ ์ ํ์ํ ์ด๊ธฐํ ์์ ๋ค์ด ์๋๋ฐ ์์ ์๋ ์ด๋ฅผ web.xml์ ์ด์ฉํด์ ์ด๊ธฐํํ์ง๋ง, ์ง๊ธ์ ์๋ธ๋ฆฟ ์คํ์์ ์๋ฐ ์ฝ๋๋ฅผ ์ฌ์ฉํ ์ด๊ธฐํ๋ ์ง์ํ๊ณ ์๋ค. ServletContainerInitializer : ์๋ธ๋ฆฟ์ ServletContainerInitializer ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํด์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋ ์ด๊ธฐํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ , onStartup() ์คํ ์์ ์ ์ด ๋ฉ์๋..
2023.04.11 -
JAVA 17 ์ค์น & Tomcat 10 ๋ฒ์ ์ค์น ํ๋ ๋ฐฉ๋ฒ
์ธํ๋ฐ [์คํ๋ง ๋ถํธ - ํต์ฌ ์๋ฆฌ์ ํ์ฉ] ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ด์ฉ์ ์ ๋ฆฌํ๋ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ค. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%ED%95%B5%EC%8B%AC%EC%9B%90%EB%A6%AC-%ED%99%9C%EC%9A%A9/dashboard ์คํ๋ง ๋ถํธ - ํต์ฌ ์๋ฆฌ์ ํ์ฉ - ์ธํ๋ฐ | ๊ฐ์ ์ค๋ฌด์ ํ์ํ ์คํ๋ง ๋ถํธ๋ ์ด ๊ฐ์ ํ๋๋ก ๋ชจ๋ ์ ๋ฆฌํด๋๋ฆฝ๋๋ค., - ๊ฐ์ ์๊ฐ | ์ธํ๋ฐ www.inflearn.com ์คํ๋ง ๋ถํธ๋ฅผ ๊ณต๋ถํ๊ณ ์ฌ์ฉํ์ง๋ ๊ฝค ๋์ง๋ง ์๋ฆฌ๋ฅผ ์๊ณ ์ฌ์ฉํ๋ค๊ธฐ ๋ณด๋ค๋ ๊ทธ๋ฅ ์คํ๋ง์ ์ฌ์ฉํ๋ฉด์ ์๋์ผ๋ก ? ์ฌ์ฉํ๋ค๊ณ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฒ์ ๊ฐ์๊ฐ ๋์จ๊น์ ํ๋ฒ ๋ค์ด๋ณด๋ ๊ฒ..
2023.04.06 -
[์ดํํฐ๋ธ ์๋ฐ] Item15. ํด๋์ค์ ๋ฉค๋ฒ์ ์ ๊ทผ ๊ถํ์ ์ต์ํํ๋ผ.
[์ดํํฐ๋ธ ์๋ฐ] Item15. ํด๋์ค๋ ๋ฉค๋ฒ์ ์ ๊ทผ ๊ถํ์ ์ต์ํํ๋ผ. https://www.inflearn.com/course/%EC%9D%B4%ED%8E%99%ED%8B%B0%EB%B8%8C-%EC%9E%90%EB%B0%94-2/dashboard ์ดํํฐ๋ธ ์๋ฐ ์๋ฒฝ ๊ณต๋ต 2๋ถ - ์ธํ๋ฐ | ๊ฐ์ ์๋ฐ ํ์ต์ ๋ํ์ “์ดํํฐ๋ธ ์๋ฐ”๋ฅผ ๋ณด๋ค ์ฝ๊ณ ์๋ฒฝํ๊ฒ ํ์ตํ์ธ์. ์ด ๊ฐ์๋ฅผ ์๊ฐํ์๋ฉด ์ฌ๋ฌ๋ถ์ ์๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ง์๊ณผ ์ค๋ ฅ๋ฟ ์๋๋ผ ํ์ต ๋ฅ๋ ฅ ๋ํ ํฅ์์ํฌ ์ ์์ต๋๋ค., - ๊ฐ www.inflearn.com ์ดํํฐ๋ธ ์๋ฐ 1๋ถ ๊ฐ์๋ฅผ ๋ชจ๋ ๋ค ๋ฃ๊ณ , ์ด์ 2๋ถ ๊ฐ์๋ฅผ ๋ฃ๊ธฐ ์์ํ๋ค! ๐ค 1๋ถ์ ๋ง์ฐฌ๊ฐ์ง๋ก 2๋ถ๋ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ค์ ๋ด์ฉ์ ๋ธ๋ก๊ทธ์ ์์ฑํด๋ ์์ ์ด๋ค. 2๋ถ์์๋ 4์ฅ ํด๋์ค์ ์ธํฐํ์ด..
2023.02.24 -
[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. ๊ธฐ๋ณธ ๋ฌธ๋ฒ(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 -
[์คํ๋ง ๋ฐ์ดํฐ JPA] 7. ๋๋จธ์ง ๊ธฐ๋ฅ๋ค
์ค๋ ๊ฐ์๋ค์ ๋ด์ฉ์ ์ค๋ฌด์์๋ ์~~~์ฒญ ์์ฃผ ์ฌ์ฉํ์ง๋ ์์ง๋ง ๊ทธ๋๋ ์๋ ๊ธฐ๋ฅ๋ค์ด๊ณ , ์ ์ฌ์ฉํ๋ฉด ๋๋ฆ ์ ์ฉํ๊ฒ ์ธ ์ ๋ ์๋ค๊ณ ํด์ ์๊ฐํ๋ ์น์ ์ด๋ผ๊ณ ํ๋ค. 1๏ธโฃ Specifications (๋ช ์ธ) : ์ฑ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ (Domain Driven Design)๋ SPECIFICATION(๋ช ์ธ) ๋ผ๋ ๊ฐ๋ ์ ์๊ฐํ๋๋ฐ ์คํ๋ง ๋ฐ์ดํฐ JPA ๋ JPA Criteria๋ฅผ ํ์ฉํด์ ์ด ๊ฐ๋ ์ ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํ๋ค. (์ผ๋จ JPA Criteria๋ฅผ ํ์ฉํด์ ์ง์ํ๋ค๋ ๊ฒ ์์ฒด๋ถํฐ๊ฐ ์ค๋ฌด์์ ์ฌ์ฉํ๊ธฐ์ ํ๋ค๋ค๋ ์๊ธฐ๋ค.. ) ์ ์ด Predicate - ์ฐธ ๋๋ ๊ฑฐ์ง์ผ๋ก ํ๊ฐ - AND OR ๊ฐ์ ์ฐ์ฐ์๋ก ์กฐํฉํด์ ๋ค์ํ ๊ฒ์์กฐ๊ฑด์ ์ฝ๊ฒ ์์ฑ(์ปดํฌ์งํธ ํจํด) - ์) ๊ฒ์ ์กฐ๊ฑด ํ๋ํ๋ - ์คํ..
2022.10.04 -
[์คํ๋ง ๋ฐ์ดํฐ JPA] 3. ๊ณตํต ์ธํฐํ์ด์ค ๊ธฐ๋ฅ
1๏ธโฃ ์์ JPA ๊ธฐ๋ฐ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ง๋ค๊ธฐ ๊ธฐ๋ณธ CRUD - ์ ์ฅ - ๋ณ๊ฒฝ -> ๋ณ๊ฒฝ ๊ฐ์ง Dirty Checking - ์ญ์ - ์ ์ฒด ์กฐํ - ๋จ๊ฑด ์กฐํ - ์นด์ดํธ โ ์ฐธ๊ณ JPA์์ ์์ ์ ํน๋ณํ ๋ช ๋ น์์ด ๋ณ๊ฒฝ๊ฐ์ง ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๋๋ค. ํธ๋์ญ์ ์์์ ์ํฐํฐ๋ฅผ ์กฐํํ ๋ค์์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด, ํธ๋์ญ์ ์ข ๋ฃ ์์ ์ ๋ณ๊ฒฝ๊ฐ์ง ๊ธฐ๋ฅ์ด ์๋ํด์ ๋ณ๊ฒฝ๋ ์ํฐํฐ๋ฅผ ๊ฐ์งํ๊ณ UPDATE SQL์ ์คํํ๋ค. - ์์ JPA ๊ธฐ๋ฐ ๋ฆฌํฌ์งํ ๋ฆฌ : ํ์ [Optional] Java8์์๋ Optional ํด๋์ค๋ฅผ ์ ๊ณตํด NPE ๋ฐ์ํ๋๊ฑธ ๋ฐฉ์งํ ์ ์๋๋ก ๋์์ค๋ค. Optional๋ null์ด ์ฌ ์ ์๋ ๊ฐ์ ๊ฐ์ธ๋ Wrapper ํด๋์ค๋ก, ์ฐธ์กฐํ๋๋ผ๋ NPE๊ฐ ๋ฐ์ํ์ง ์๋๋ก ๋์์ค๋ค. Optional์ ๊ฐ์ด n..
2022.09.22