๐ป ๊ณต๋ถ ๊ธฐ๋ก
-
ํด๋น ๋ด์ฉ์ ๊ณต๋ถ์ ๋ชฉ์ ์ผ๋ก ๊ธฐ๋ก๋์์ผ๋ฉฐ, ์๋ ๋ด์ฉ์ ๋ชจ๋ ๊ตฌ๊ธ ๊ฒ์์ผ๋ก ๊ณต๋ถ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค. ์ด์ฌํ ๋ฐฐ์ฐ๋ ์ค์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ๐ SqlSessionFactoryBean / SqlSessionTemplate SqlSessionFactory: SqlSession์ ์์ฑํด์ ์ ๊ณต SqlSession: SQL๋ช ๋ น์ ์ํํ๋๋ฐ ํ์ํ ๋ฉ์๋ ์ ๊ณต SqlSessionFactoryBean: SqlSessionFactory๋ฅผ Spring์์ ์ฌ์ฉํ๊ธฐ ์ํ ๋น SqlSessionTemplate: SQL๋ช ๋ น์ ์ํํ๋๋ฐ ํ์ํ ๋ฉ์๋ ์ ๊ณต thread-safe Thread Safe๋? ๋๋ณด๊ธฐ ์ค๋ ๋ ์์ (Thread Safety)์ ๋ฉํฐ ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์์ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ค ํจ์๋ ๋ณ์, ํน์ ๊ฐ..
Spring/Mybatis | Mybatis SqlSessionํด๋น ๋ด์ฉ์ ๊ณต๋ถ์ ๋ชฉ์ ์ผ๋ก ๊ธฐ๋ก๋์์ผ๋ฉฐ, ์๋ ๋ด์ฉ์ ๋ชจ๋ ๊ตฌ๊ธ ๊ฒ์์ผ๋ก ๊ณต๋ถ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค. ์ด์ฌํ ๋ฐฐ์ฐ๋ ์ค์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ๐ SqlSessionFactoryBean / SqlSessionTemplate SqlSessionFactory: SqlSession์ ์์ฑํด์ ์ ๊ณต SqlSession: SQL๋ช ๋ น์ ์ํํ๋๋ฐ ํ์ํ ๋ฉ์๋ ์ ๊ณต SqlSessionFactoryBean: SqlSessionFactory๋ฅผ Spring์์ ์ฌ์ฉํ๊ธฐ ์ํ ๋น SqlSessionTemplate: SQL๋ช ๋ น์ ์ํํ๋๋ฐ ํ์ํ ๋ฉ์๋ ์ ๊ณต thread-safe Thread Safe๋? ๋๋ณด๊ธฐ ์ค๋ ๋ ์์ (Thread Safety)์ ๋ฉํฐ ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์์ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ค ํจ์๋ ๋ณ์, ํน์ ๊ฐ..
2023.06.15 -
ํด๋น ๋ด์ฉ์ ๊ณต๋ถ์ ๋ชฉ์ ์ผ๋ก ๊ธฐ๋ก๋์์ผ๋ฉฐ, ์๋ ๋ด์ฉ์ ๋ชจ๋ ๊ตฌ๊ธ ๊ฒ์์ผ๋ก ๊ณต๋ถ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค. ์ด์ฌํ ๋ฐฐ์ฐ๋ ์ค์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ๐ ์์กด์ฑ ์ฃผ์ DI(Dependency Injection) Spring ํ๋ ์์ํฌ๋ 3๊ฐ์ง ํต์ฌ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ง์ํ๊ณ ์๋ค. ๊ทธ ์ค ํ๋๊ฐ ์์กด์ฑ ์ฃผ์ (DI)์ด๋ค. ์์กด์ฑ ์ฃผ์ (DI)์ด๋ ์ธ๋ถ์์ ๋ ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ฒฐ์ ํด์ฃผ๋ ๋์์ธ ํจํด์ผ๋ก, ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ด์ ๋ฌ์ ํด๋์ค ๋ ๋ฒจ์์๋ ์์กด๊ด๊ณ๊ฐ ๊ณ ์ ๋์ง ์๋๋ก ํ๊ณ ๋ฐํ์ ์์ ๊ด๊ณ๋ฅผ ๋์ ์ผ๋ก ์ฃผ์ ํ์ฌ ์ ์ฐ์ฑ์ ํ๋ณดํ๊ณ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ์ ์๊ฒ ํด์ค๋ค. ํ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋ ์์กด์ฑ์ด ์๋ค๊ณ ํจ. ๋ฐํ์ ์ ์์กด ๊ด๊ณ๋ฅผ ๋งบ๋ ๋์์ ์ธ๋ถ์์ ๊ฒฐ์ ํ๊ณ ์ฃผ์ ํด ์ค๋ค. ์คํ๋ง ํ๋ ์์ํฌ๋ D..
Spring | DI(Dependency Injection)ํด๋น ๋ด์ฉ์ ๊ณต๋ถ์ ๋ชฉ์ ์ผ๋ก ๊ธฐ๋ก๋์์ผ๋ฉฐ, ์๋ ๋ด์ฉ์ ๋ชจ๋ ๊ตฌ๊ธ ๊ฒ์์ผ๋ก ๊ณต๋ถ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค. ์ด์ฌํ ๋ฐฐ์ฐ๋ ์ค์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ๐ ์์กด์ฑ ์ฃผ์ DI(Dependency Injection) Spring ํ๋ ์์ํฌ๋ 3๊ฐ์ง ํต์ฌ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ง์ํ๊ณ ์๋ค. ๊ทธ ์ค ํ๋๊ฐ ์์กด์ฑ ์ฃผ์ (DI)์ด๋ค. ์์กด์ฑ ์ฃผ์ (DI)์ด๋ ์ธ๋ถ์์ ๋ ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ฒฐ์ ํด์ฃผ๋ ๋์์ธ ํจํด์ผ๋ก, ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ด์ ๋ฌ์ ํด๋์ค ๋ ๋ฒจ์์๋ ์์กด๊ด๊ณ๊ฐ ๊ณ ์ ๋์ง ์๋๋ก ํ๊ณ ๋ฐํ์ ์์ ๊ด๊ณ๋ฅผ ๋์ ์ผ๋ก ์ฃผ์ ํ์ฌ ์ ์ฐ์ฑ์ ํ๋ณดํ๊ณ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ์ ์๊ฒ ํด์ค๋ค. ํ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋ ์์กด์ฑ์ด ์๋ค๊ณ ํจ. ๋ฐํ์ ์ ์์กด ๊ด๊ณ๋ฅผ ๋งบ๋ ๋์์ ์ธ๋ถ์์ ๊ฒฐ์ ํ๊ณ ์ฃผ์ ํด ์ค๋ค. ์คํ๋ง ํ๋ ์์ํฌ๋ D..
2023.06.14 -
ํด๋น ๋ด์ฉ์ ๊ณต๋ถ์ ๋ชฉ์ ์ผ๋ก ๊ธฐ๋ก๋์์ผ๋ฉฐ, ์๋ ๋ด์ฉ์ ๋ชจ๋ ๊ตฌ๊ธ ๊ฒ์์ผ๋ก ๊ณต๋ถ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค. ์ด์ฌํ ๋ฐฐ์ฐ๋ ์ค์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ๐ ๋ฆฌํ๋ ์ (Reflection) ๋ฆฌํ๋ ์ ์ ์์ฑ์, ๋ฉ์๋, ํ๋ ๋ฑ ํด๋์ค์ ๋ํ ์ ๋ณด๋ฅผ ์์ฃผ ์์ธํ ์๋ ค์ฃผ๋ ์๋ฐ API ์ด๋ค. ๋ํ์ ์ธ ์์๋ก ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ ์์ํฌ์์ ์ฌ์ฉ๋๋ ์ด๋ ธํ ์ด์ ์ด ๋ฆฌํ๋ ์ ์ ํตํด ํ์ธํ๋ ๋ฐฉ๋ฒ ๋ฑ์ด ์๋ค. ๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ๋ฉด ์ ๊ทผ ์ ์ด์์ ๋ฌด๊ดํ๊ฒ ํด๋์ค์ ํ๋๋ ๋ฉ์๋๋ ๊ฐ์ ธ์์ ํธ์ถํ ์ ์๋ค. ๐ ์ด๋ ธํ ์ด์ (Annotation) ๊ฐ์ ธ์ค๊ธฐ ๋ํ์ ์ธ ์์ ์ค ํ๋๋ฅผ ์ค์ตํด๋ดค๋ค. ๐ ์์ ์ด๋ ธํ ์ด์ ์์ฑ ์ด๋ ธํ ์ด์ ์ ํด๋ ๊ตฌ์ฑ ์์ ์ด๋ ธํ ์ด์ ์ ์ฝ๋ package com.example.mvcpractice.ann..
Spring | Reflection์ ์ฌ์ฉํ์ฌ Annotation ๊ฐ์ ธ์ค๊ธฐํด๋น ๋ด์ฉ์ ๊ณต๋ถ์ ๋ชฉ์ ์ผ๋ก ๊ธฐ๋ก๋์์ผ๋ฉฐ, ์๋ ๋ด์ฉ์ ๋ชจ๋ ๊ตฌ๊ธ ๊ฒ์์ผ๋ก ๊ณต๋ถ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค. ์ด์ฌํ ๋ฐฐ์ฐ๋ ์ค์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ๐ ๋ฆฌํ๋ ์ (Reflection) ๋ฆฌํ๋ ์ ์ ์์ฑ์, ๋ฉ์๋, ํ๋ ๋ฑ ํด๋์ค์ ๋ํ ์ ๋ณด๋ฅผ ์์ฃผ ์์ธํ ์๋ ค์ฃผ๋ ์๋ฐ API ์ด๋ค. ๋ํ์ ์ธ ์์๋ก ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ ์์ํฌ์์ ์ฌ์ฉ๋๋ ์ด๋ ธํ ์ด์ ์ด ๋ฆฌํ๋ ์ ์ ํตํด ํ์ธํ๋ ๋ฐฉ๋ฒ ๋ฑ์ด ์๋ค. ๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ๋ฉด ์ ๊ทผ ์ ์ด์์ ๋ฌด๊ดํ๊ฒ ํด๋์ค์ ํ๋๋ ๋ฉ์๋๋ ๊ฐ์ ธ์์ ํธ์ถํ ์ ์๋ค. ๐ ์ด๋ ธํ ์ด์ (Annotation) ๊ฐ์ ธ์ค๊ธฐ ๋ํ์ ์ธ ์์ ์ค ํ๋๋ฅผ ์ค์ตํด๋ดค๋ค. ๐ ์์ ์ด๋ ธํ ์ด์ ์์ฑ ์ด๋ ธํ ์ด์ ์ ํด๋ ๊ตฌ์ฑ ์์ ์ด๋ ธํ ์ด์ ์ ์ฝ๋ package com.example.mvcpractice.ann..
2023.06.13 -
ํด๋น ๋ด์ฉ์ ๊ณต๋ถ์ ๋ชฉ์ ์ผ๋ก ๊ธฐ๋ก๋์์ผ๋ฉฐ, ์๋ ๋ด์ฉ์ ๋ชจ๋ ๊ตฌ๊ธ ๊ฒ์์ผ๋ก ๊ณต๋ถ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค. ์ด์ฌํ ๋ฐฐ์ฐ๋ ์ค์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ๐ AWS ํด๋ผ์ฐ๋ ํด๋ผ์ฐ๋์ ์ฉ์ด๋ ์ฐ๊ฒฐ ๋ฐ ๋ฐ์ดํฐ ํ๋ฆ์ ์ค๋ช ํ๋ ๋ค์ด์ด๊ทธ๋จ์์ ์ธํฐ๋ท ๋ฆฌ์์ค ๋๋ ์ฐ๊ฒฐ์ฑ์ด ๊ตฌ๋ฆ์ผ๋ก ํํ๋์๋ ์์ ์์ ์ ๋ํ๋ค. ํด๋ผ์ฐ๋๋ ์ธํฐ๋ท์ ํตํด์ IT๋ฆฌ์์ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์์ ์ฌ์ฉํ๊ณ ์ฌ์ฉํ ๋งํผ๋ง ๋น์ฉ์ ์ง๋ถํ๊ณ ์ฌ์ฉํ๋ ์๋น์ค์ด๋ค. IT์์์ ์ง์ ๊ตฌ์ถํ๊ณ ์ด์ํ ํ์์์ด ์ธํ๋ผ ์์ค๋ก ๋ฐ๊พธ๊ณ ์ฌ์ฉ์๋ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋๋ก ํ๋ค. ํ๋ง๋๋ก ํด๋ผ์ฐ๋๋ ๊ตฌ๋ฆ ์ฆ ์ธํฐ๋ท์ ํตํด์ ์๊ฒฉ์ง์ ์๋ IT ๋ฆฌ์์ค๋ฅผ ์ด์ฉํ๋ ์๋น์ค์ด๋ค. ๐ AWS ํด๋ผ์ฐ๋์ ์ฅ์ ๋ฏผ์ฒฉ์ฑ: ์๋ ๋ฐ ๋ฏผ์ฒฉ์ฑ ํฅ์ ์จ๋๋งจ๋ ์ ํ ์๋น์ค ํ๋ ฅ์ฑ: ๊ท..
AWS | AWS ํด๋ผ์ฐ๋ํด๋น ๋ด์ฉ์ ๊ณต๋ถ์ ๋ชฉ์ ์ผ๋ก ๊ธฐ๋ก๋์์ผ๋ฉฐ, ์๋ ๋ด์ฉ์ ๋ชจ๋ ๊ตฌ๊ธ ๊ฒ์์ผ๋ก ๊ณต๋ถ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค. ์ด์ฌํ ๋ฐฐ์ฐ๋ ์ค์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ๐ AWS ํด๋ผ์ฐ๋ ํด๋ผ์ฐ๋์ ์ฉ์ด๋ ์ฐ๊ฒฐ ๋ฐ ๋ฐ์ดํฐ ํ๋ฆ์ ์ค๋ช ํ๋ ๋ค์ด์ด๊ทธ๋จ์์ ์ธํฐ๋ท ๋ฆฌ์์ค ๋๋ ์ฐ๊ฒฐ์ฑ์ด ๊ตฌ๋ฆ์ผ๋ก ํํ๋์๋ ์์ ์์ ์ ๋ํ๋ค. ํด๋ผ์ฐ๋๋ ์ธํฐ๋ท์ ํตํด์ IT๋ฆฌ์์ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์์ ์ฌ์ฉํ๊ณ ์ฌ์ฉํ ๋งํผ๋ง ๋น์ฉ์ ์ง๋ถํ๊ณ ์ฌ์ฉํ๋ ์๋น์ค์ด๋ค. IT์์์ ์ง์ ๊ตฌ์ถํ๊ณ ์ด์ํ ํ์์์ด ์ธํ๋ผ ์์ค๋ก ๋ฐ๊พธ๊ณ ์ฌ์ฉ์๋ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋๋ก ํ๋ค. ํ๋ง๋๋ก ํด๋ผ์ฐ๋๋ ๊ตฌ๋ฆ ์ฆ ์ธํฐ๋ท์ ํตํด์ ์๊ฒฉ์ง์ ์๋ IT ๋ฆฌ์์ค๋ฅผ ์ด์ฉํ๋ ์๋น์ค์ด๋ค. ๐ AWS ํด๋ผ์ฐ๋์ ์ฅ์ ๋ฏผ์ฒฉ์ฑ: ์๋ ๋ฐ ๋ฏผ์ฒฉ์ฑ ํฅ์ ์จ๋๋งจ๋ ์ ํ ์๋น์ค ํ๋ ฅ์ฑ: ๊ท..
2023.06.12 -
ํด๋น ๋ด์ฉ์ ๊ณต๋ถ์ ๋ชฉ์ ์ผ๋ก ๊ธฐ๋ก๋์์ผ๋ฉฐ, ์๋ ๋ด์ฉ์ ๋ชจ๋ ๊ตฌ๊ธ ๊ฒ์์ผ๋ก ๊ณต๋ถ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค. ์ด์ฌํ ๋ฐฐ์ฐ๋ ์ค์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ๐ JPA Auditing Java์์ ORM ๊ธฐ์ ์ธ JPA๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ฉ์ธ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋งคํํ ๋ ๊ณตํต์ ์ผ๋ก ๋๋ฉ์ธ๋ค์ด ๊ฐ์ง๊ณ ์๋ ํ๋๋ ์ปฌ๋ผ๋ค์ด ์กด์ฌํ๋ค. ๋ํ์ ์ผ๋ก ์์ฑ์ผ์, ์์ ์ผ์, ์๋ณ์ ๊ฐ์ ํ๋ ๋ฐ ์ปฌ๋ผ์ด ์๋ค. JAP์์๋ ๋ํ์ ์ธ ๊ธฐ๋ฅ Audit์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. Audit๋ ์๊ฐ์ ๋ํด์ ์๋์ผ๋ก ๊ฐ์ ๋ฃ์ด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค. ๐ ์์กด์ฑ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org...
Spring JPA | JPA Auditing ๊ฐ๋ ํด๋น ๋ด์ฉ์ ๊ณต๋ถ์ ๋ชฉ์ ์ผ๋ก ๊ธฐ๋ก๋์์ผ๋ฉฐ, ์๋ ๋ด์ฉ์ ๋ชจ๋ ๊ตฌ๊ธ ๊ฒ์์ผ๋ก ๊ณต๋ถ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค. ์ด์ฌํ ๋ฐฐ์ฐ๋ ์ค์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ๐ JPA Auditing Java์์ ORM ๊ธฐ์ ์ธ JPA๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ฉ์ธ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋งคํํ ๋ ๊ณตํต์ ์ผ๋ก ๋๋ฉ์ธ๋ค์ด ๊ฐ์ง๊ณ ์๋ ํ๋๋ ์ปฌ๋ผ๋ค์ด ์กด์ฌํ๋ค. ๋ํ์ ์ผ๋ก ์์ฑ์ผ์, ์์ ์ผ์, ์๋ณ์ ๊ฐ์ ํ๋ ๋ฐ ์ปฌ๋ผ์ด ์๋ค. JAP์์๋ ๋ํ์ ์ธ ๊ธฐ๋ฅ Audit์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. Audit๋ ์๊ฐ์ ๋ํด์ ์๋์ผ๋ก ๊ฐ์ ๋ฃ์ด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค. ๐ ์์กด์ฑ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org...
2023.06.01 -
ํด๋น ๋ด์ฉ์ ๊ณต๋ถ์ ๋ชฉ์ ์ผ๋ก ๊ธฐ๋ก๋์์ผ๋ฉฐ, ์๋ ๋ด์ฉ์ ๋ชจ๋ ๊ตฌ๊ธ ๊ฒ์์ผ๋ก ๊ณต๋ถ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค. ์ด์ฌํ ๋ฐฐ์ฐ๋ ์ค์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ๐ JPA(Java Persistence API) ์๋ฐ ORM(Object Relational Mapping) ๊ธฐ์ ์ ๋ํ API ํ์ค ๋ช ์ธ๋ฅผ ๋ปํ๋ค. ๐ ORM ๊ธฐ์ ์ด๋? ORM ๊ธฐ์ ์ ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๋งคํํด์ฃผ๋ ๊ธฐ์ ์ด๋ค. - Object Relational Mapping ๊ฐ์ฒด๋ ๊ฐ์ฒด๋๋ก, ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋๋ก ์ค๊ณํ๊ณ , ORM ํ๋ ์์ํฌ๊ฐ ์ค๊ฐ์์ ๋งคํ์ ํด์ค๋ค. ๐ JPA๋ ORM์ ์ฌ์ฉํ๊ธฐ ์ํ ์ธํฐํ์ด์ค์ ๋ชจ์์ด๋ค. ๋จ์ํ ๋ช ์ธ์ด๊ธฐ ๋๋ฌธ์ ๊ตฌํ์ด ์๊ณ , ์๋ฐ ์ ํ๋ฆฌ์ผธ์ด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ง ์ ..
Spring JPA | JPA(Java Persistence API)ํด๋น ๋ด์ฉ์ ๊ณต๋ถ์ ๋ชฉ์ ์ผ๋ก ๊ธฐ๋ก๋์์ผ๋ฉฐ, ์๋ ๋ด์ฉ์ ๋ชจ๋ ๊ตฌ๊ธ ๊ฒ์์ผ๋ก ๊ณต๋ถ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์ต๋๋ค. ์ด์ฌํ ๋ฐฐ์ฐ๋ ์ค์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ๐ JPA(Java Persistence API) ์๋ฐ ORM(Object Relational Mapping) ๊ธฐ์ ์ ๋ํ API ํ์ค ๋ช ์ธ๋ฅผ ๋ปํ๋ค. ๐ ORM ๊ธฐ์ ์ด๋? ORM ๊ธฐ์ ์ ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๋งคํํด์ฃผ๋ ๊ธฐ์ ์ด๋ค. - Object Relational Mapping ๊ฐ์ฒด๋ ๊ฐ์ฒด๋๋ก, ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋๋ก ์ค๊ณํ๊ณ , ORM ํ๋ ์์ํฌ๊ฐ ์ค๊ฐ์์ ๋งคํ์ ํด์ค๋ค. ๐ JPA๋ ORM์ ์ฌ์ฉํ๊ธฐ ์ํ ์ธํฐํ์ด์ค์ ๋ชจ์์ด๋ค. ๋จ์ํ ๋ช ์ธ์ด๊ธฐ ๋๋ฌธ์ ๊ตฌํ์ด ์๊ณ , ์๋ฐ ์ ํ๋ฆฌ์ผธ์ด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ง ์ ..
2023.06.01 -
๐ Git branch ๐ ๊น ๋ธ๋์น๋ฅผ ์ด์ํ๋ ๋ฐฉ๋ฒ๋ก gitflow: master, develop, feature, release, hotfix github flow: main(master), feature ๋ธ๋์น ์ ๋ต์ ์ธ์ฐ๋ ์ด์ ์ ์๋ น ํ๋์ ํ๋ก์ ํธ ์์ค์ฝ๋๋ฅผ ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๋ค๋ฃจ๋ฉด์ ๋ฐ์ํ๋ ๊ฐ์ข ๋ถ์์ฉ ํด๊ฒฐ์ ์ํจ. ๊ฐ๋ฐ ํ์ ์ ์ํ ํ๊ฒ ํ๊ธฐ ์ํ ์ฝ์ ์ ๋ต์ ์ธ์ธ ๋ ๊ณ ๋ คํ ์ ์๋ ์์๋ค ์ด ๋ธ๋์น๋ ์ ํ์ผ๋ก ๋ด๋ณด๋ผ ์ ์๋๊ฐ? ์ด ๋ธ๋์น๋ ๋น๋ ์คํจ๋ฅผ ํ์ฉํ๋๊ฐ? ์ด ๋ธ๋์น๋ ํ ์คํธ ์คํจ๋ฅผ ํ์ฉํ๋๊ฐ? ์ด ๋ธ๋์น๋ ์์๋ก ์ด์ํ๋๊ฐ? ์ ์งํ์ง ์๊ณ ์์๋ก ์ญ์ ํ๋๊ฐ
Git branch ์ ๋ต ์ธ์ฐ๊ธฐ๐ Git branch ๐ ๊น ๋ธ๋์น๋ฅผ ์ด์ํ๋ ๋ฐฉ๋ฒ๋ก gitflow: master, develop, feature, release, hotfix github flow: main(master), feature ๋ธ๋์น ์ ๋ต์ ์ธ์ฐ๋ ์ด์ ์ ์๋ น ํ๋์ ํ๋ก์ ํธ ์์ค์ฝ๋๋ฅผ ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๋ค๋ฃจ๋ฉด์ ๋ฐ์ํ๋ ๊ฐ์ข ๋ถ์์ฉ ํด๊ฒฐ์ ์ํจ. ๊ฐ๋ฐ ํ์ ์ ์ํ ํ๊ฒ ํ๊ธฐ ์ํ ์ฝ์ ์ ๋ต์ ์ธ์ธ ๋ ๊ณ ๋ คํ ์ ์๋ ์์๋ค ์ด ๋ธ๋์น๋ ์ ํ์ผ๋ก ๋ด๋ณด๋ผ ์ ์๋๊ฐ? ์ด ๋ธ๋์น๋ ๋น๋ ์คํจ๋ฅผ ํ์ฉํ๋๊ฐ? ์ด ๋ธ๋์น๋ ํ ์คํธ ์คํจ๋ฅผ ํ์ฉํ๋๊ฐ? ์ด ๋ธ๋์น๋ ์์๋ก ์ด์ํ๋๊ฐ? ์ ์งํ์ง ์๊ณ ์์๋ก ์ญ์ ํ๋๊ฐ
2023.05.31 -
๐ ์ด๊ธฐ ์ฝ๋ ๋ฐ๋ณต๋ฌธ์ ํตํด์ ํ์ผ์ ๋ํ ์ ๋ณด๋ฅผ formData๋ก ๋ฃ๊ณ , ๋ค๋ฅธ ํจ์ ์คํ์ ์ํด ํ์ํ ๋ณ์๊ฐ์ ์ ์ํ์ฌ ํจ์ ์คํ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์๊ฐ์ด์์ผ๋, chatFilePattern์ ๋ณ์๊ฐ์ด ๊ณ ์ ์ ์ผ๋ก ๋ค์ด๊ฐ๋ฉด์ ์๊ธด ๋ถ๋ถ์ ๋ํด์ ์์ ํ๊ณ , ์์ ํ ์ฝ๋์ ๋ํ ๋ฆฌ๋ทฐ๋ฅผ ์งํํ๋ค. for (const file of files) { chatFilePattern = firstNum + "" + countFileNumber++ formData.append("files", file); formData.append("chatFileNumber", chatFilePattern); // Base64 ์ด๋ฏธ์ง ๋ณํ const reader = new FileReader(); reader.readAsDat..
JS/Refactoring | ํด๋ก์ , ์ฝ๋ฐฑ๐ ์ด๊ธฐ ์ฝ๋ ๋ฐ๋ณต๋ฌธ์ ํตํด์ ํ์ผ์ ๋ํ ์ ๋ณด๋ฅผ formData๋ก ๋ฃ๊ณ , ๋ค๋ฅธ ํจ์ ์คํ์ ์ํด ํ์ํ ๋ณ์๊ฐ์ ์ ์ํ์ฌ ํจ์ ์คํ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์๊ฐ์ด์์ผ๋, chatFilePattern์ ๋ณ์๊ฐ์ด ๊ณ ์ ์ ์ผ๋ก ๋ค์ด๊ฐ๋ฉด์ ์๊ธด ๋ถ๋ถ์ ๋ํด์ ์์ ํ๊ณ , ์์ ํ ์ฝ๋์ ๋ํ ๋ฆฌ๋ทฐ๋ฅผ ์งํํ๋ค. for (const file of files) { chatFilePattern = firstNum + "" + countFileNumber++ formData.append("files", file); formData.append("chatFileNumber", chatFilePattern); // Base64 ์ด๋ฏธ์ง ๋ณํ const reader = new FileReader(); reader.readAsDat..
2023.05.26