๋ฐ์ํ Spring45 Spring Batch (3) DB ์คํค๋ง ๐ ํด๋น ํฌ์คํ ์ ๋ชฉํ Spring Batch DB ์คํค๋ง ๋ถ์ ๐ Spring Batch DB ์คํค๋ง ์ง๋ ์๊ฐ์๋ Spring Batch์ ๊ฐ์ ๋ฐ ํ๋ก์ ํธ ๊ตฌ์ฑ, ์ธํ ๋ฐ ๊ฐ๋จํ Job ์คํ์ ๋ํด ์ดํด๋ณด์์ต๋๋ค. ์ด๋ฒ ์๊ฐ์๋ Spring Batch์ Meta Data Schema์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. Meta Data Schema ์คํ๋ง ๋ฐฐ์น์ ์คํ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ชฉ์ ์ผ๋ก ์ฌ๋ฌ ๋๋ฉ์ธ๋ค(Job, Step, JobParameters ๋ฑ)์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅ, ์ ๋ฐ์ดํธ, ์กฐํ ๋ฑ์ ์์ ์ ํ ์ ์๋ ์คํค๋ง ์ ๊ณต ๊ณผ๊ฑฐ ๋ฐ ํ์ฌ์ Batch ์คํ์ ๋ํ ์ ๋ณด(์ฑ๊ณต, ์คํจ ์ฌ๋ถ)๋ฅผ ๊ด๋ฆฌํจ์ผ๋ก์ ๋ฐฐ์น์ด์ ๋ฐ ์ฅ์ ์ ๊ด๋ จ๋ ๋์ฒ ๊ฐ๋ฅ DB์ ์ฐ๋ํ ๊ฒฝ์ฐ ํ์์ ์ผ๋ก ๋ฉํ ํ ์ด๋ธ์ด ์์ฑ๋์ด์ผ ํจ DB ์คํค.. 2022. 10. 30. Spring Batch (2) ํ๋ก์ ํธ ๊ตฌ์ฑ ๋ฐ ์์กด์ฑ ์ค์ , Hello World ๐ ํด๋น ํฌ์คํ ์ ๋ชฉํ Spring Batch ํ๋ก์ ํธ ์ค์ Spring Batch ์ค์ ๋ด๋ถ Spring Batch Hello World ๐ Spring Batch ํ๋ก์ ํธ ๊ตฌ์ฑ ํ๋ก์ ํธ ๊ตฌ์ฑ์ IntelliJ, Java 11, Gradle, MySQL(Docker), H2, Spring Boot, Batch ๋ฑ์ ์ฌ์ฉํ ์์ ์ ๋๋ค. (ํ๋ก์ ํธ ์ค์ ๊ด๋ จ ์ค๋ช ์ ์์ผ๋ GitHub๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.) ๐ Spring Batch ์์กด์ฑ ์ค์ ์คํ๋ง ๋ฐฐ์น๋ฅผ ์๋์ํค๊ธฐ ์ํด ๋ฉ์ธ ํด๋์ค์ @EnableBatchProcessing ์ด๋ ธํ ์ด์ ์ ์ ์ธํด์ผ ํฉ๋๋ค. import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;.. 2022. 10. 29. Spring Batch (1) ๊ฐ์ ํ์ฌ์์ Spring Batch ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ค๋ง, ๋์ฉ๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ์๋, ๋จ์ 1ํ์ฑ ์๋น์ค๋ฅผ ์คํํ๊ธฐ ์ํด ๋ ๊ฑฐ์ ํ๋ก์ ํธ๋ฅผ Spring Batch ํ๋ก์ ํธ๋ก ์กฐ๊ธ์ฉ ์ด๊ดํ๊ณ ์๋๋ฐ์, ๊ธฐ์กด์ ์์ฑ๋ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ํ์ํ ๋ถ๋ถ๋ง ํ์ ํ ํ ์ฝ๋๋ฅผ ์์ฑํ๋ค๋ณด๋ Spring Batch์ ์ฌ์์ด๋ ๊ฐ๋ , ์ ์ฉํ ๊ธฐ๋ฅ(skip, retry, chunk, listener ๋ฑ๋ฑ)๋ค์ ๋ํด ์์ธํ ์์ง ๋ชปํ์ฑ ๊ฐ๋ฐํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฐ๋ผ์ Spring Batch ํ๋ก์ ํธ์ ๋ฐฐ๊ฒฝ๋ถํฐ ๊ฐ๋ , ์ฉ์ด, ๋ค์ํ ๊ธฐ๋ฅ ๋ฑ๋ฑ์ ๋ํด ์ ๋ฆฌํ์ฌ ํ์ตํ๊ณ ์ ํฉ๋๋ค. ํด๋น ํฌ์คํ ์ ๋ชฉํ Spring Batch ์๊ฐ Spring Batch ๋ฐฐ๊ฒฝ Spring Batch ์ํคํ ์ฒ Spring Batch ๊ตฌ.. 2022. 10. 28. Spring + MyBatis์์ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ์ ๊ฐ์ฒด๊ฐ ๋งคํ์ด ๋๋ ๊ณผ์ ๐งท Spring + MyBatis์์ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ์ ๊ฐ์ฒด๊ฐ ๋งคํ์ด ๋๋ ๊ณผ์ ์คํ๋ง์์ ๋ง์ด๋ฐํฐ์ค๋ฅผ ์ฌ์ฉํ ๋, Select ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ์ ๊ฐ์ฒด(Dto)๊ฐ ์ด๋ ํ ์์ ์ ํตํด ๋งคํ์ด ๋๋์ง ์ ํํ๊ฒ ํ์ ํ๊ณ ๊ณต์ ํ๊ธฐ ์ํด ๋งคํ ๊ณผ์ ์ ๋ํด ์ ๋ฆฌํด ๋ณด์์ต๋๋ค. (๋น์ฐํ ํ๋ฆฐ ๋ด์ฉ์ด ์กด์ฌํ ์ ์์ผ๋ ํผ๋๋ฐฑ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๐) ๐ ๊ฐ์ Spring๊ณผ MyBatis์์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ๊ฐ์ฒด์ ๋งคํ์ด ์ด๋ฃจ์ด์ง๋ ๊ณผ์ ์ ๋ํด ์ดํด๋ด ๋๋ค. ์ด์ ๊ด๋ จํ์ฌ ์ด๋ ํ ๋ฐฉ์์ผ๋ก ๋งคํ์ ์งํํ๋์ง, ์ข์ ๋ฐฉ๋ฒ์ด ๋ฌด์์ธ์ง ๋ฑ์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๐ ๊ฒฐ๋ก ํฌ์คํ ์ด ๊ฝค๋ ์ฅ๋ฌธ์ด๊ธฐ์,, ๋งคํ ๊ณผ์ ์ ๋ํด ๊ฒฐ๋ก ๋ถํฐ ๋ง์๋๋ฆฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๊ธฐ๋ณธ ์์ฑ์(NoArgs)๋ง ์กด์ฌํ ๊ฒฝ์ฐ, ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ๊ฐ์ฒด์ ๋งคํ์ด ์ ์์ ์ผ๋ก ์ง.. 2022. 10. 3. JUnit5 assertThat vs assertAll vs assertSoftly ๐ JUnit5 assertThat vs assertAll vs assertSoftly ํ์ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๋ assertThat ํน์ assertAll ๋ด๋ถ์ assertThat์ ์์ฑํ์๋๋ฐ์, ์ด๋ฒ์ SoftAssertions์ assertSoftly๋ผ๋ ๊ฒ์ฆ ๋ฉ์๋๋ฅผ ์๊ฒ๋์ด ๊ฐ๋ตํ ์ ๋ฆฌํด๋ณด๊ณ ์ ํฉ๋๋ค. ๐ โ๏ธ ํ ์คํธ ์ฝ๋ import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.SoftAssertions.assertSoftly; import static org.junit.jupiter.api.Assertions.ass.. 2022. 9. 17. Spring Boot profiles ์ค์ ํ๊ธฐ ๐ Spring Boot profiles ์ค์ ํ๊ธฐ ์๋ ํ์ธ์, ์ด๋ฒ ํฌ์คํ ์์๋ ์คํ๋ง ๋ถํธ์์ ์ฌ๋ฌ profile์ ์ค์ ํ๊ณ , ์ค์ ๊ฐ๋ค์ ๊ฐ์ฒด์ ๋ฐ์ธ๋ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ค์ ๊ฐ๋ฐ์ ์งํํ๊ณ ์ด์์ ํ๋ค๋ณด๋ฉด ๊ฐ๋ฐ(dev), ํ ์คํธ(stage), ์ํ(alpha), ์์ฉ(prod) ๋ฑ ์ด์ํ๊ฒฝ์ ๋ฐ๋ผ ์๋ฒ๋ ์ค์ ๊ฐ๋ค์ด ์ฌ๋ฌ๊ฐ๋ก ๋๋ ์ ์๋๋ฐ์, ์คํ๋ง ๋ถํธ์์๋ ์ด๋ฌํ ์ค์ ์ ๊ฐ๋จํ ํ ์ ์์ต๋๋ค. ํด๋น ํฌ์คํ ์์๋ yml ํ์ผ์ ๊ธฐ์ค์ผ๋ก ์ค์ ์ ํด๋ณด๊ฒ ์ต๋๋ค. ๐คฏ ๐ yml ํ์ผ ์์ฑํ๊ธฐ resource ํ์ ํด๋์ ์์ฑํ yml ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๐ application.yml spring: profiles: active: - local group: local: - site.. 2022. 9. 5. Spring Thread, Transaction, Connection ๊ด๊ณ ๐ Spring Thread, Transaction, Connection ๊ด๊ณ ์๋ ํ์ธ์, ์ต๊ทผ ํ ๋น์ ์คํ๋ง ๋์๋ก ์คํฐ๋ ์ค ์๋์ ๋น์ทํ ์ง๋ฌธ์ด ์์์ต๋๋ค. "ํธ๋์ญ์ ์ด ์๋ก ์์ฑ๋ ๋ ์ค๋ ๋๊ฐ ์๋ก ์์ฑ๋ ๊น์?" ์ด์ ๊ด๋ จํ์ฌ ์๋์ ๊ด๊ณ๋ค์ ๋ํด ๊ฐ๋ตํ ์ ๋ฆฌํด๋ณด๊ณ ์ ํฉ๋๋ค. (๊ด๋ จ ์ฝ๋๋ GitHub์์ ํ์ธํ ์ ์์ต๋๋ค. ๐ ) Thread per transaction vs One thread for serveral transaction Thread per connection vs One thread for all connections ํ๋ฆฐ ๋ด์ฉ์ด ์กด์ฌํ ์ ์์ผ๋ ์ด๋ฌํ ๋ถ๋ถ์์๋ ํผ๋๋ฐฑ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๐ (โป ํด๋น ํฌ์คํ ์ https://truehong.tistory.com/14.. 2022. 9. 3. Spring Data MongoDB Array field $elemMatch(MongoRepository Custom) ๐ MongoRepository Custom ๋ฐ $elemMatch ์ฌ์ฉํ๊ธฐ ์ต๊ทผ ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ MongoDB๋ฅผ ์ฒ์์ผ๋ก ์ฌ์ฉํด๋ณด๊ณ ์์ต๋๋ค. ๊ฐ๋จํ ๋ก์ง์ Query Method๋ @Query ์ด๋ ธํ ์ด์ ์ผ๋ก ๊ฐ๋จํ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์์ผ๋, MongoDB์ ๊ฒฝ์ฐ ๋ฌธ๋ฒ์ ์ต์์น ์๋ค๋ณด๋ ์ง์ Repository๋ฅผ ์ปค์คํ ์ผ๋ก ์์ฑํด์ ๊ด๋ฆฌํ๋๊ฒ ๋ณด๋ค ํธ๋ฆฌํ ๋ฏ ํ์ฌ ์ปค์คํ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด ์๊ฐํ๊ณ ์ ํฉ๋๋ค. ์ถ๊ฐ์ ์ผ๋ก ์ฝ๊ฐ ์ฝ์ง์ํ๋ Query ๋ฐ Criteria, $elemMatch๋ฅผ ํตํด MongoDB์์ Array field๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ์ถ๊ฐ์ ์ผ๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ฌผ๋ก QueryDSL์ ์ ์ฉํ๋ฉด ์ข ๋ ํธํ๊ฒ ์์ฑ์ด ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ผ๋, ์ถํ ๋ณ๊ฒฝ.. 2022. 8. 20. Spring Boot SQL ์ค์ (hibernate, logging) ๐ Spring Boot SQL ์ค์ (hibernate, logging) ์๋ ํ์ธ์, Spring Boot์ hibernate SQL ์ค์ ์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ค์ ์ด์์ ํ๋ค๋ณด๋ฉด ์ํ๋ ์ฟผ๋ฆฌ๋ฌธ์ ๋ํด ํ์ ํ๊ณ , DB์์ ๊ฒฐ๊ณผ๊ฐ์ ํ์ธํ๊ณ ์ถ์๋๊ฐ ์์ต๋๋ค. ์ด๋, ๋ก๊ทธ ํ์ผ์ ์ฟผ๋ฆฌ๋ฌธ์ด ์ ์ฅ์ด ๋์ด์๋ค๋ฉด, ํด๋น ์ฟผ๋ฆฌ๋ฌธ์ ๋ณต๋ถํ์ฌ ๊ฐ๋จํ ๊ฒฐ๊ณผ๊ฐ์ ํ์ธํ ์ ์๋ ์ฅ์ ์ด ์กด์ฌํฉ๋๋ค. ๋ฌผ๋ก ๋ชจ๋ ์ฟผ๋ฆฌ๋ฌธ์ ๋ํด ๋ก๊ทธ ํ์ผ์ ์ ์ฅํ๋ค๋ฉด ์ฉ๋ ๋ฑ์ ์ด์๊ฐ ์์์๋ ์๊ฒ ์ฃ ? ํนํ ๋ณต์กํ๊ฒ ์ํ๋๋ ์ฟผ๋ฆฌ๋ฌธ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ์กด์ฌํ ๋, ์ด๋ฅผ ํ๋์ฉ ๋ถ์ํ์ฌ DB์์ ์ฟผ๋ฆฌ๋ฅผ ์ํํ์ฌ ๊ฒฐ๊ณผ๊ฐ์ ํ์ธํ๊ธฐ์๋ ๊ฝค๋ ๋ฒ๊ฑฐ๋ก์ด ์์ ์ด ๋ ์ ์๋๋ฐ์ ์ด๋ด๋ ๊ต์ฅํ ํธํ๊ฒ ํ์ธํ ์ ์์ต๋๋ค. StringBuilder sb.. 2022. 3. 12. Spring AOP - (2) AOP ๊ฐ๋ ๋ฐ ์ค์ต ๐ ๊ธ๋ 6๊ธฐ ํฌ์คํ 1. ๋ฏธ์น๋๋ก ๋์ ๋ 7์์ ํ๊ณ 2. ์ฌ์ฉ์๊ฐ ๊ฒ์๋ฌผ์ ์์ฑํ ๋์ ํธ๋์ญ์ ์ฒ๋ฆฌ 3. Spring AOP - (1) ํ๋ก์ ํจํด, ๋ฐ์ฝ๋ ์ดํฐ ํจํด 4. [MySQL] - ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค(Isolation level) 5. Spring AOP - (2) AOP ๊ฐ๋ ๋ฐ ์ค์ต 6. ์ธํ ๋ฆฌ์ ์ด(IntelliJ) - ๋๋ฒ๊น (Debugging) ํ๊ธฐ 7. [Java, ๋์์ธํจํด] - ์ฑ๊ธํด ํจํด(Singleton Pattern) 8. ์๊ฐ ์ฝ๋๋ฆฌ๋ทฐ Ver_0.1: ์ปค๋ฆฌ์ด ์ฑ์ฅ CODE ์ธ๋ฏธ๋ ์ ๋ฆฌ 9. ํฌ์คํธ๋งจ(API ํ ์คํธ) ํ์ฉํ๊ธฐ 10. ๋ป๊น์ 2021๋ ํ๊ณ ๐ Spring AOP(Aspect Oriented Programming) ํฌ์คํ ์ ์์ฑํ ์์ ์ฝ๋๋ ๊นํ๋ธ์์ ํ์ธ.. 2021. 9. 24. ์ด์ 1 2 3 4 5 ๋ค์ ๋ฐ์ํ