์ ์ฒด ๊ธ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. ์ด์ 1 2 3 4 ยทยทยท 13 ๋ค์