๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€109

[JPA] save() ์™€ saveAndFlush() ์˜ ์ฐจ์ด save ๊ธฐ๋Šฅ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์ค‘์‹ฌ์—์„œ์˜ Entity ๊ฐ์ฒด๋ฅผ ORM ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅsave() ๋ฉ”์†Œ๋“œ๐Ÿ‘‰ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์—๋งŒ ์ €์žฅ (DB์— ๋ฐ”๋กœ ์•ˆ ๋‚ ๋ฆผ)save() ๋ฉ”์†Œ๋“œ๋Š” ๋ฐ”๋กœ DB ์— ์ €์žฅ๋˜์ง€ ์•Š๊ณ  ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ €์žฅ๋˜์—ˆ๋‹ค๊ฐ€ flush() ๋˜๋Š” commit() ์ˆ˜ํ–‰ ์‹œ DB์— ์ €์žฅ๋จ → 1์ฐจ ์บ์‹œ์— ์ €์žฅ → ํŠธ๋žœ์žญ์…˜ ์ปค๋ฐ‹ ์‹œ flush → ๊ทธ๋•Œ INSERT ์‹คํ–‰ saveAndFlush() ๋ฉ”์†Œ๋“œ๐Ÿ‘‰ ์ €์žฅ + ์ฆ‰์‹œ flush (DB์— ๋ฐ”๋กœ INSERT ์‹คํ–‰)saveAndFlush() → ์ €์žฅ → ์ฆ‰์‹œ flush → ์ฆ‰์‹œ INSERT ์‹คํ–‰ ๋™์ž‘ ๋น„๊ต1. save() ๋ฉ”์†Œ๋“œ ๋””๋ฒ„๊น…orderRepository.save() ์ˆ˜ํ–‰ ํ›„DB ๋กœ ๋ณด๋‚ด๋Š” ์ฟผ๋ฆฌ๊ฐ€ ์—†์Œ -> ์•„์ง DB์— ์ €์žฅ๋˜.. 2026. 3. 24.
[JPA] findById์™€ getReferenceById ์ฐจ์ด SpringBoot ํ”„๋กœ์ ํŠธ๋ฅผ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง ๊ณผ์ •์—์„œ JPA์—์„œ ์ œ๊ณตํ•˜๋Š” findById๋งŒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€getReferenceById๋„ ์•Œ๊ฒŒ ๋˜์–ด ์ •๋ฆฌ ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. findById() - ์ฆ‰์‹œ ๋กœ๋”ฉ๐Ÿ‘‰ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฆ‰์‹œ DB์—์„œ ์กฐํšŒMember member = memberRepository.findById(1L).get();// ๐Ÿ‘‰ ์ด๋ฏธ SQL ์‹คํ–‰๋จํŠน์ง•ํ˜ธ์ถœ ์‹œ์ ์— ๋ฐ”๋กœ SQL ์‹คํ–‰์‹ค์ œ ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜Optional ํ˜•ํƒœ๋ผ null ์•ˆ์ „์„ฑ ์žˆ์Œ๊ฐ’์ด ์—†์œผ๋ฉด Optional.empty()์–ธ์ œ ์‚ฌ์šฉ?๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ฒฝ์šฐํ•„๋“œ ๊ฐ’์„ ๋ฐ”๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•ŒgetReferenceById() -์ง€์—ฐ ๋กœ๋”ฉ๐Ÿ‘‰ ํ”„๋ก์‹œ ๊ฐ์ฒด(๊ฐ€์งœ ๊ฐ์ฒด) ๋จผ์ € ๋ฐ˜ํ™˜ → ํ•„์š”ํ•  ๋•Œ DB ์กฐํšŒMember member = .. 2026. 3. 23.
[SpringBoot] ์Šคํ”„๋ง ๋ฉ”์ผ ์ „์†ก ๋ฐฉ๋ฒ• ( + google Gmail SMTP ์„ค์ •) ์Šคํ”„๋ง ๋ถ€ํŠธ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฉ”์ผ ์ „์†ก ๊ธฐ๋Šฅ ๊ตฌํ˜„1. ๊ตฌ๊ธ€ Gmail SMTP ์‚ฌ์šฉ ์œ„ํ•œ ์„ค์ • ๊ตฌ๊ธ€ ์‚ฌ์ดํŠธ > ํ”„๋กœํ•„ ํด๋ฆญ > Google ๊ณ„์ • ๊ด€๋ฆฌ ๊ฒ€์ƒ‰์ฐฝ์— > "์•ฑ ๋น„๋ฐ€๋ฒˆํ˜ธ" ๊ฒ€์ƒ‰ ์•ฑ ์ด๋ฆ„ ์„ค์ • > ๋งŒ๋“ค๊ธฐ 16์ž๋ฆฌ์˜ ์•ฑ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ƒ์„ฑ๋จ 2. build.gradledependencies { // ๋ฉ”์ผ ์ „์†ก ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ implementation 'org.springframework.boot:spring-boot-starter-mail' } 3. application-mail.propertiesโ€ป ์•ฑ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์œ ์ถœ๋˜๋ฉด ์œ„ํ—˜ํ•˜๋ฏ€๋กœ ๊ผญ .gitignore์— application-mail.properties ํŒŒ์ผ ์ถ”๊ฐ€ํ•˜๊ธฐ.(๋ณธ์ธ์€ ๋ณด์•ˆ ๊ด€๋ จ ์„ค์ • ํŒŒ์ผ application-oauth... 2026. 3. 16.
[SpringBoot] ์Šคํ”„๋ง๋ถ€ํŠธ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ JUnit ์ด๋ž€? ์ž๋ฐ” ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์˜๋ฏธ.@BeforeAll - ์ „์ฒด ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ ์‹คํ–‰ ์ „์— ๋”ฑ ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰, static public/default๋กœ ์ •์˜@AfterAll - ์ „์ฒด ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ ์ข…๋ฃŒ ํ›„ ๋”ฑ ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰, static public/default๋กœ ์ •์˜@BeforeEach - ๊ฐ ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ ์‹œ์ž‘ ์ „์— ์‹คํ–‰, public๋กœ ์ •์˜@AfterEach - ๊ฐ ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ ์ข…๋ฃŒ ํ›„์— ์‹คํ–‰, public๋กœ ์ •์˜@BeforeAll -> @BeforeEach -> @Test -> @AfterEach ->@AfterAll AssertJ๋Š” JUnit๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด ๊ฒ€์ฆ๋ฌธ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์—ฌ์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.์˜ˆ์‹œ: assertThat(a+b).isEqualTo(sum); ๋ฉ”์„œ๋“œ ์ข…๋ฅ˜:isE.. 2026. 2. 20.
[AWS] AWS ์‚ญ์ œ (๊ณผ๊ธˆ ๋ฐฉ์ง€) AWS EC2, RDS, S3, CodeDeploy ๋“ฑ์œผ ์ด์šฉํ•ด ์„œ๋ฒ„ ๋ฐฐํฌ ์—ฐ์Šต์ด ๋๋‚ฌ์œผ๋‹ˆ ์ด์   ์ˆœ์ฐจ์ ์œผ๋กœ ์‚ญ์ œํ•ด์•ผ ๊ณผ๊ธˆ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค. 1. EC2 ์ธ์Šคํ„ด์Šค ์‚ญ์ œ2. ๋„คํŠธ์›Œํฌ ๋ฐ ๋ณด์•ˆ -> ํƒ„๋ ฅ์  IP ์‚ญ์ œ์ž‘์—… -> ํƒ„๋ ฅ์  IP ๋ฆด๋ฆฌ์Šค3. ๋„คํŠธ์›Œํฌ ๋ฐ ๋ณด์•ˆ -> ๋ณด์•ˆ ๊ทธ๋ฃน ์‚ญ์ œ๋ณด์•ˆ ๊ทธ๋ฃน ์‚ญ์ œ๊ฐ€ ์•ˆ๋œ๋‹ค๋ฉด ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™ ๋จผ์ € ์‚ญ์ œ -> ๋ณด์•ˆ ๊ทธ๋ฃน ์‚ญ์ œ ํ•˜๋ฉด ๋œ๋‹ค.4. RDS ์‚ญ์ œ์„œ๋ธŒ๋„ท ๊ทธ๋ฃน ์‚ญ์ œํŒŒ๋ผ๋ฏธํ„ฐ ๊ทธ๋ฃน ์‚ญ์ œ5. S3 ์‚ญ์ œ6. ํ‚คํŽ˜์–ด ์‚ญ์ œ7. CodeDeploy ์‚ญ์ œ8. IAM ์‚ฌ์šฉ์ž, ์—ญํ•  ์‚ญ์ œ 9. VPC ์‚ญ์ œVPC ์„œ๋ธŒ๋„ท ์‚ญ์ œVPC ๋ณด์•ˆ ๊ทธ๋ฃน ์‚ญ์ œ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™ ๋จผ์ € ์‚ญ์ œ ์ €์žฅ๋ฆฌ์ „ ๊ตญ๊ฐ€๋ณ„ VPC ์‚ญ์ œ, DHCP์˜ต์…˜ ์„ธํŠธ ์‚ญ์ œ - ๊ตญ๊ฐ€๋ณ„๋กœ VPC ๋“ค์–ด๊ฐ€๋ณด๋ฉด ์ˆซ์ž๋“ค์ด ๋– ์žˆ๋‹ค. ๊ตญ๊ฐ€๋ณ„๋กœ ํ•˜๋‚˜์”ฉ VPC .. 2025. 11. 23.
[AWS] Complete your account setup & Free account plan access limitations ๋ฌธ์ œ AWS ํ”„๋ฆฌํ‹ฐ์–ด ๊ฐ€์ž…ํ•ด์„œ EC2, RDS ๋“ฑ์„ ์ด์šฉ ์ค‘์ด์—ˆ๋‹ค.AWS CodeDeploy ์ด์šฉํ•˜๋ ค๋Š”๋ฐ ์•„๋ž˜์— ์ด๋Ÿฐ ๋ฉ”์„ธ์ง€๊ฐ€ ๋œจ๋ฉฐ ์ด์šฉํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.๋”๋ณด๊ธฐComplete your account setupThanks for signing up for Amazon Web Services. If we have directed you to this page, then you have either not finished registering, or your account is currently on free plan.Account setup checklistProvided all required information during sign-up. This includes adding a payment method, c.. 2025. 11. 20.
[CICD] Spring Boot + GitHub Actions + AWS CodeDeploy๋ฅผ ํ™œ์šฉํ•œ CI/CD ๊ตฌ์ถ•(2) https://choihjhj.tistory.com/entry/CICD-Spring-Boot-GitHub-Actions-AWS-CodeDeploy%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-CICD-%EA%B5%AC%EC%B6%951 ์ „์— ํฌ์ŠคํŒ…ํ•œ [CICD] Spring Boot + GitHub Actions + AWS CodeDeploy๋ฅผ ํ™œ์šฉํ•œ CI/CD ๊ตฌ์ถ•(1) ๊ธ€์„ ์ด์–ด์„œ ์ด๋ฒˆ์—” AWS CodeDeploy ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•ด appspec.yml(๋ฐฐํฌ ์„ค์ • ํŒŒ์ผ)๊ณผ scripts/deploy.sh(๋ฐฐํฌ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ)๋ฅผ ๋งŒ๋“ค์–ด AWS CodeDeploy ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ž๋™ ๋ฐฐํฌํ•œ๋‹ค.๐ŸŒง CodeDeploy ์ž๋™ ๋ฐฐํฌ 1. CodeDeploy ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑAWS ๊ณ„์ •.. 2025. 11. 19.
[CICD] Spring Boot + GitHub Actions + AWS CodeDeploy๋ฅผ ํ™œ์šฉํ•œ CI/CD ๊ตฌ์ถ•(1) ๋”๋ณด๊ธฐ์œ„์™€ ๊ฐ™์€ ์ด์œ ๋กœ, Github Repository์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Github Actios์—์„œ ์ œ๊ณตํ•˜๋Š” CI/CD ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด AWS Codedeploy๋กœ EC2 ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌํ•œ๋‹ค.โ˜๏ธ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ (CI/CD)GitHub → GitHub Actions → AWS S3 → AWS CodeDeploy → EC2 1. GitHub์— push ๋ฐœ์ƒ ์‹œ GitHub Actions์— ์ •์˜๋œ .github/workflows/deploy.yml(๋นŒ๋“œ→ zip์••์ถ• → S3 ์—…๋กœ๋“œ → CodeDeploy ํ˜ธ์ถœ)ํŒŒ์ผ์„ ์ฝ์–ด ์ž๋™ ๋นŒ๋“œ ์‹คํ–‰2.appspec.yml(๋ฐฐํฌ ์„ค์ • ํŒŒ์ผ)์„ ์ฝ์–ด ์–ด๋–ค ํŒŒ์ผ์„ EC2์— ๋ฐฐํฌํ• ์ง€ / ์–ด๋–ค ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ• ์ง€ ์ •์˜๋ฅผ ์ฝ์Œ3. appspec.yml์—์„œ ์ง€์ •๋œ .. 2025. 11. 17.
[SpringBoot] ๋กœ๊ทธ(Log) @Slf4j ๋กœ๊ทธ (Log) ๋กœ๊ทธ(Log)๋ž€ ์‹œ์Šคํ…œ์ด ๋™์ž‘ํ•  ๋•Œ ์‹œ์Šคํ…œ์˜ ์ƒํƒœ ๋ฐ ๋™์ž‘ ์ •๋ณด๋ฅผ ์‹œ๊ฐ„ ๊ฒฝ๊ณผ์— ๋”ฐ๋ผ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ ๋กœ๊ทธ ๋ ˆ๋ฒจ (Log Level)๋กœ๊ทธ๋Š” ๋กœ๊ทธ ๋ ˆ๋ฒจ์— ๋”ฐ๋ผ ์ถœ๋ ฅ๋ ์ง€ ๋„˜์–ด๊ฐˆ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. ๋กœ๊ทธ ๋ ˆ๋ฒจ์— ๋”ฐ๋ฅธ ์‹ฌ๊ฐ๋„ ์ˆ˜์ค€์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.Trace > Debug > Info > Warn > Error > Fatal๋กœ๊ทธ ๋ ˆ๋ฒจ์„ค๋ช…์˜ˆ์‹œTRACE๊ฐ€์žฅ ์ƒ์„ธํ•œ ์ •๋ณด(๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๋‹จ์œ„)๋ฉ”์„œ๋“œ ์ง„์ž…/๋ฐ˜ํ™˜ ์‹œ์  ๋“ฑDEBUG๋””๋ฒ„๊น…์šฉ ์ƒ์„ธ ์ •๋ณด๋ณ€์ˆ˜ ๊ฐ’, ๋กœ์ง ํ๋ฆ„ ์ถ”์ INFO์ผ๋ฐ˜์ ์ธ ์ •๋ณด์„œ๋น„์Šค ์‹œ์ž‘, ์š”์ฒญ ์ฒ˜๋ฆฌ ์™„๋ฃŒWARN๊ฒฝ๊ณ  ์ƒํ™ฉ(์—๋Ÿฌ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ฃผ์˜ ํ•„์š”)์„ฑ๋Šฅ ์ €ํ•˜, ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ž…๋ ฅERROR์˜ค๋ฅ˜ ๋ฐœ์ƒ์˜ˆ์™ธ, ์‹œ์Šคํ…œ ์žฅ์•  ๐Ÿ’ก API๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ DEBUG๋กœ ์„ค์ •, ๋ฐฐํฌ์‹œ์—๋Š” INFO๋‚˜ Warn ๋ ˆ๋ฒจ๋กœ.. 2025. 11. 9.