BACKEND
39
API :: API Versioning ?
1
2024.04.26
๋ฐฑ์๋๋ฅผ ๊ฐ๋ฐํ๋ ๊ฐ๋ฐ์๋ผ๋ฉด API๋ฅผ ๋ง๋ค๊ณ ๋ฐฐํฌํ ๊ฒฝํ์ด ์์ ๊ฒ์ด๋ค.์ด๋ฐ API๋ ํ๋ฒ ๋ง๋ค๊ณ ๋ฐฐํฌํ๋ฉด, ์ญ์ ํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ๊ฒ ์ด๋ ค์์ง๊ฒ ๋๋๋ฐ.. ๊ทธ๋์ API Versioning์ผ๋ก ์ด๋ฅผ ๊ด๋ฆฌํ๊ฒ ๋๋ค..! API Versioning?API์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ด๋ฆฌํ๊ณ ์ถ์ ํ๋ ํ๋ก์ธ์ค. ๋ณ๊ฒฝ ์ฌํญ์ API ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๋ ๊ฒ ๋ํ ํฌํจ ๋จ. API์ ์์ฐ์์ ์๋น์๊ฐ ๊ณต๊ฐ์ธ์ง, ๋น๊ณต๊ฐ์ธ์ง์ ๊ด๊ณ์์ด API๊ฐ ๋ฐ์ ํจ์ ๋ฐ๋ผ ๋๊ธฐํ๋ฅผ ์ ์งํ๋ ๊ฒ์ด ์ค์ํ๋ฐใ
ก, ์ด๋ฅผ ์ํด API Versioning์ ํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค. API Versioning ๋ฐฉ๋ฒ๋ณดํต ๋ค๋ฅธ ํ๋ก๊ทธ๋จ๋ค์ ๋ณ๊ฒฝ, ๋ณด์ ํด์ ์ฌ ๋ฐฐํฌ ํ ๋ 1.0.1 ํํ๋ก tag ๋ publish๋ฅผ ์งํํ๊ฒ ๋๋๋ฐ,API ๋ ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก Ver..
MSSQL :: ๋ฐ์ดํฐ ์ ๋ ฌ(COLLATE)
2024.04.25
SQL Server์ ๋ฐ์ดํฐ ์ ๋ ฌ์ ๋ฐ์ดํฐ์ ๋ํ ์ ๋ ฌ ๊ท์น๊ณผ ๋/์๋ฌธ์ ๋ฐ ์
์ผํธ ๊ตฌ๋ถ ์์ฑ์ ์ ๊ณตํ๋ค. ์๋ฒ, DB, ์ด ๋๋ ์์ ๋ฐ์ดํฐ ์ ๋ ฌ์ ์ ํํ๊ฒ ๋๋ฉด ๋ฐ์ดํฐ์ ํน์ ํน์ฑ์ด ํ ๋น๋๊ฒ ๋๋ค. ์ด๋ฐ ํน์ฑ์ ์ฌ๋ฌ DB ์์
์ ๊ฒฐ๊ณผ์ ์ํฅ์ ์ฃผ๋๋ฐ.. ์๋ฅผ ๋ค์ด Order by๋ฅผ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ ๊ฒฝ์ฐ, ๊ฒฐ๊ณผ ์งํฉ์ ์ ๋ ฌ ์์๋ ์ฟผ๋ฆฌ์ ์ ์์ค์์ Collate ์ ์ ์ง์ ๋๊ฑฐ๋ DB์ ์ ์ฉ๋ ๋ฐ์ดํฐ ์ ๋ ฌ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๊ฒ ๋จ. ์ง์ํ๋ ์ธ์ดSELECT * FROM sys.fn_helpcollations() ์์ ์ฟผ๋ฆฌ๋ก ์ง์ํ๋ ์ธ์ด SET ์ ์ข
๋ฅ๋ฅผ ํ์ธํด๋ณผ ์ ์๋ค. ์ด 5,540๊ฑด. ์ด ์ค Korean์ผ๋ก ์์๋๋ ์ ๋ ฌ ๋ฌธ์์ด์ ๋ํด ์์๋ณด์.!! Korean๊ณผ ๊ด๋ จ๋๋ ์ธ์ดSETSELECT ..
SQL :: ์ค๋ณต ์ ๊ฑฐ (Group by, Distinct)
2024.04.22
์ค๋ผํด(Oracle)์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋, ์ค๋ณต ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋1. distinct ๋ฅผ ๊ฑฐ๋ ๋ฐฉ๋ฒ ๊ณผ 2. group by ์ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. Group by- Group by ๋ ๋ฐ์ดํฐ๋ค์ ์ํ๋ ๊ทธ๋ฃน์ผ๋ก ๋๋ ์ ์์.- ๋๋๊ณ ์ ํ๋ ๊ทธ๋ฃน์ ์ปฌ๋ผ๋ช
์ SELECT์ ๊ณผ GROUP BY์ ๋ค์ ์ถ๊ฐํ๋ฉด ๋จ.- ์ง๊ณํจ์์ ํจ๊ป ์ฌ์ฉํ๋ ์์๋ GROUP BY์ ์ ์ถ๊ฐํ์ง ์์๋ ๋จ.SELECT deptno ๋ถ์๋ฒํธ, COUNT(*) ์ฌ์์ FROM emp GROUP BY deptno ORDER BY COUNT(*) DESC; Distinct - ์ค๋ณต๋ ํ์ ์ ๊ฑฐํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉ.SELECT distinct deptno ๋ถ์๋ฒํธ, COUN..
SQL :: ANSI JOIN ๊ณผ Oracle JOIN
1
2024.04.19
ํ์ mssql ๋ฐ์ ์ ํ ์ผ์ด ์์ด์ ์ค๋ผํด ๋ฌธ๋ฒ์ ์์ํ๋ฐ...์กฐ์ธ์ ๊ฑธ ๋ (+) ๋ก ํ๊ธฐํ๋ ๊ฒฝ์ฐ๊ฐ ์์๋ค.์ด๊ฒ ๋ญ๊ฐ ํ๊ณ ์ฐพ์๋ณด๋ ์ฐ๋ฆฌ๊ฐ ๊ธฐ์กด์ ์ฌ์ฉํ๋ outer join, inner join, left join ๋ฑ ์ง์ ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ ANSI JOIN ์ด๋ผ๊ณ ํ๊ณ (+)๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ์ธ ์ข
๋ฅ๋ฅผ ์ง์ ํ๋ ๊ฒ์ Oracle JOIN ์ด๋ผ๊ณ ํ๋จ๋ค.. ๋ค์ด๊ฐ๊ธฐ์ ์์ SQL JOIN์ ์ข
๋ฅ๋ถํฐ ์์๋ณด์. JOIN ์ ์ข
๋ฅ* INNER JOIN* LEFT OUTER JOIN* RIGHT OUTER JOIN* CROSS JOIN* FULL OUTER JOIN ์ด๋ ๊ฒ ์๋๋ฐ ๋ณดํต ๋ง์ด ์ฌ์ฉํ๋ ๊ฑดINNER JOIN ๊ณผ LEFT/RIGHT OUTER JOIN ์ ๋๊ฐ ๋์๊ฒ ๋ค..
Spring boot :: ์ธ๋ถ http ๋ถ๋ฌ์ body ๊ฐ ๋ฆฌํดํ๋ RequestUtil (Proxy Server ๊ธฐ๋ฅ)
2024.02.20
๋ด๊ฐ ํ๊ณ ์ถ์๋ ๊ฒ์ http:~ ๋ก ๋ ์ฃผ์์ ๋ด๊ธด API data ๋ฅผ ๋ด๊ฐ ๊ตฌํํ ์๋ฒ์์ ์ ๊ณตํ๋ ๊ฑฐ ์์. ๊ณ ๋ก ๋ด๊ฐ ๊ตฌํํ ์๋ฒ์์ ํ๋ก์ ์๋ฒ์ ์ญํ ์ ํด์ฃผ์ด์ผ ํ๋ ๊ฒ. ์ด๋ ๋ญ RestTemplete ์ด๋ WebClient ๋ ์ค์นํ๊ณ ์
ํ
ํ๊ณ ... ๋๋ฌด ๊ท์ฐฎ์์. ๊ทธ๋์ ๊ฐ๋จ ver ๋ก requestUtil ์ ๋ง๋ค์ด๋ณด์๋ค. import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframewo..
Springboot, Mybatis :: ๋ถ๋ฑํธ, ๋น๊ต์ฐ์ฐ์ ์ฌ์ฉ ๋ฐฉ๋ฒ
1
2024.02.02
์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ๋ค๋ณด๋ฉด ๋น๊ต๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๋๋ฐ.. ๋ง์ด๋ฐํฐ์ค์์๋ , WITH CTE(WorkDate) AS ( SELECT CONVERT ( DATE, #{Year}+'-01-01') UNION ALL SELECT DATEADD(d, 1, WorkDate) FROM CTE WHERE WorkDate (CONVERT(DATE, #{Year}+'-12-31')) ) SELECT * FROM CTE OPTION ( MAXRECURSION 0 ); ๋. WITH CTE(WorkDate) AS ( SELECT CONVERT ( DATE, #{Year}+'-01-01') UNION ALL SELECT DATEADD(d, 1, WorkDate) FROM CTE WHERE ) SELECT * FROM CTE..
MSSQL, Mybatis :: DBํด๊ณผ ์น์์์ ์ฟผ๋ฆฌ ์๋๊ฐ ๋ค๋ฅผ ๋ ๊ณ ๋ คํ ๊ฒ
2024.01.16
์ฟผ๋ฆฌ์๋๋ 00:00:06 ์ด ์ ๋๋ก ์งง๊ฒ ๋์ค๋๋ฐ API ์คํ ์๋๋ 48์ด๊ฐ ๋์ค๋ ์ผ์ด์ค๊ฐ ๋ฐ์. ๋ฌผ๋ก ๊ฑด ์๊ฐ ๋ง์ SQL์ด๊ธฐ๋ ํ์ง๋ง, ์ฟผ๋ฆฌ ์๋์ API ์๋๊ฐ ์ด๋ ๊ฒ ๋น๋กํ์ง ์๋ ์ผ์ด์ค๋ ์ฒ์์ด์์. -- ์ด๋ฐ ํ์์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ ๋๋ถ๋ถ Where ์ ์ ์กฐ๊ฑด์ด VARCHAR๋ก ๋์ด ์๋ค๋ ๊ฒ MSSQL ์ ํน์ง MSSQL์ ๊ฒฝ์ฐ VARCHARํ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ ๋ NVARCHARํ์ผ๋ก ๋ณํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ๋ค๊ณ ํจ. ์ฆ, ๋ฐ์ดํฐ์ ์ฌ์ด์ฆ๋ฅผ ๊ฐ๋ณ์ผ๋ก ํ ์ง ์๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ผ๋ก ๋ณด์. ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋๋ง๋ค ๊ฐ์ ์ ์ผ๋ก ํ์
์บ์คํ
์ด ์ผ์ด๋๊ณ , ์ํ๋๋ ์ฟผ๋ฆฌ์ ํ์
์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ INDEX๋ฅผ ์ํ๊ฒ ๋จ. ใ
-ใ
.. ์ฟผ๋ฆฌ ํ๋์ ์๋ฌด๋ฆฌํด๋ DB ์๋๋ ๋นจ๋ผ์ง๋๋ฐ, API ํธ์ถ ์๋๋ ํฌ๊ฒ..
Mybatis :: ๋ฌ๋ฌ($)์ ์ต(#)์ ์ฐจ์ด
2024.01.16
ํ๋ผ๋ฏธํฐ ๋งคํ์ ํ๋ ๋ฐ์ ์ฌ์ฉํ๋ $์ # ๋๊ฐ์ง์ ์ฐจ์ด์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ๋ค. # PreparedStatement๋ฅผ ์๋ฏธ ํ๋ผ๋ฏธํฐ๊ฐ String ํํ๋ก ๋ค์ด์ ์๋์ผ๋ก(' ') ํ๋ผ๋ฏธํฐ ํํ๊ฐ ๋จ #{user_id} ์ ๊ฐ์ด 'neeon'์ด๋ผ๋ฉด user_id = 'neeon' ํํ๊ฐ ๋จ ์ฟผ๋ฆฌ ์ฃผ์
์ ์๋ฐฉํ ์ ์์ด ๋ณด์ ์ธก๋ฉด์์ ์ ๋ฆฌ ์ ์ ์ธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์บ์ฑ์ ํด์ ์ฌํ์ฉํ ์ ์์ด์ ํจ์จ์ ์ $ Statement๋ฅผ ์๋ฏธ ํด๋น ์ปฌ๋ผ์ ์๋ฃํ์ ๋ง์ถ์ด ํ๋ผ๋ฏธํฐ์ ์๋ฃํ์ด ๋ณ๊ฒฝ๋จ ํ๋ผ๋ฏธํฐ๊ฐ ๋ฐ๋ก ์ถ๋ ฅ๋จ. ์ฟผ๋ฆฌ ์ฃผ์
์ ์๋ฐฉํ ์ ์์ด ๋ณด์ ์ธก๋ฉด์์ ๋ถ๋ฆฌํ๋ฏ๋ก ์ฌ์ฉ์์ ์
๋ ฅ์ ์ ๋ฌํ ๋๋ ์ฌ์ฉํ์ง ์์ (SQL Injection) ํ
์ด๋ธ์ด๋ ์ปฌ๋ผ๋ช
์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๊ณ ์ถ์ ๋ ์ฌ์ฉํจ ์ฐจ์ด์ ..
SpringBoot :: ์ด์ด์ด๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ์ ์์ฒญ์ ๋ํ ๊ฒฝ๊ณผ์๊ฐ ์์๋ณด๊ธฐ
2024.01.16
๊ฐ๋ฐ ๋์ค API ํธ์ถ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ ์์ด๋ฅผ ๋ฐ๊ฒฌํ๊ฒ ๋์๋ค. DB ์๊ฐ์ SQL ์ ๋๋ ค๋ณด๋ฉด ๋์ค๋๋ฐ.. ์์๋งํผ ์ค๋ ๊ฑธ๋ฆฌ์ง๋ ์์๊ณ ๊ทธ๋ฆฌ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฟ๋ฆฌ๋ ๊ฒ ์ ๋ถ์ธ๋ฐ๋ค, ๊ทธ๋ฆฌ๋์ ๊ฒฝ์ฐ๋ ๋ณ๋ ๊ตฌํ์์ด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉ ์ค์ด๋ผ์ ํ๋ก ํธ์๋์ ๋ฌธ์ ๋ ์๋๊ฑฐ ๊ฐ๊ณ .. ํน์ ๋ชจ๋ฅด๋๊น ๋ฐฑ์๋ ๊ฒฝ๊ณผ ์๊ฐ์ด ์ด๋ป๊ฒ ๊ฑธ๋ฆฌ๋์ง ํ์ธ์ ํด๋ณด๊ณ ์ ํ๋ค. ์์ค ์ฝ๋ // ์ปจํธ๋กค๋ฌ ๋จ long startTime = System.currentTimeMillis(); List TactTimeList = tacttimeService.tacttime(paramMap); // Service ํธ์ถ๋ถ long endTime = System.currentTimeMillis(); long ms = endTime - start..
MSSQL :: ํน์ ์ปฌ๋ผ์์ ๋ฐ์ดํฐ ๊ธธ์ด๊ฐ ๊ฐ์ฅ ๊ธด ๋ฌธ์์ด ROW ์ฐพ๊ธฐ
2024.01.11
How select * from ํ
์ด๋ธ๋ช
where len(์ปฌ๋ผ๋ช
) = (select max(len(์ปฌ๋ผ๋ช
)) from ํ
์ด๋ธ๋ช
); Result itemName ์ด ์ ์ผ ๊ธด๊ฑธ ์ฐพ์๋ฌ๋ผ๊ณ ํ์. ๊ฒ์ํ๋๊น ์ ๋ถ ์ค๋ผํด ๊ธฐ์ค ๋ฌธ๋ฒ๋ง ๋์์ ๋ฉ๋ชจํด๋ .
Java :: equals() ์ == ์ ์ฐจ์ด
2024.01.09
.equals()์ == ๋ชจ๋ ๋น๊ต ์ฐ์ฐ์์ด๋ฉฐ ๋ ๋ค ๋ชจ๋ ์์ชฝ์ ์๋ ๋ด์ฉ์ ๋น๊ตํ ๊ฐ์ boolean type์ผ๋ก ๋ฐํํ๋ค. ๊ทธ๋ฐ๋ฐ java์์ String์ฒ๋ผ Class์ ๊ฐ์ ๋น๊ตํ ๋์๋ ๋ณดํต equals() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋๋ฐ... equals์ ==๋ ๊ตฌ์กฐ์ ์ผ๋ก ์ด๋ค ์ฐจ์ด์ ์ ๊ฐ๋์ง ์์๋ณด๋๋ก ํ์. 1. ํํ์ ์ฐจ์ด .equals() ๋ ๋ฉ์๋ ์ด๋ฉฐ == ๋ ๋น๊ต๋ฅผ ์ํ ์ฐ์ฐ์ ์ด๋ค. 2. ์ฃผ์ ๊ฐ ๋น๊ต์ ์ค์ ๊ฐ(๋ด์ฉ) ๋น๊ต .equals() ๋ฉ์๋๋ ๋น๊ตํ๊ณ ์ ํ๋ ๋์์ ๋ด์ฉ ์์ฒด๋ฅผ ๋น๊ตํ์ง๋ง, == ์ฐ์ฐ์๋ ๋น๊ตํ๊ณ ์ ํ๋ ๋์์ ์ฃผ์ ๊ฐ์ ๋น๊ตํ๋ค. int, float, double, byte ๋ฑ์ primitive type ์ผ๋ก Call By Value(CBV) ์ ํด๋น. Cla..
MSSQL :: date format ๋ ์ง ํ์๋ค
2024.01.09
Convert Datetime ๊ณผ ๊ด๋ จ๋ ๊ฒ๋ค.. Date Format ๋ฌธ๋ฒ CONVERT([ํฌ๋งท(ํฌ๊ธฐ)], [๋ ์ง๊ฐ], [๋ณํํ์]) Date Format ์ ๋ ์ง ํ์๋ค SELECT GETDATE()-- 2024-01-09 05:48:47.190 SELECT CONVERT(VARCHAR, GETDATE(), 0)-- Jan 9 2024 5:48AM SELECT CONVERT(VARCHAR, GETDATE(), 1)-- 01/09/24 SELECT CONVERT(VARCHAR, GETDATE(), 2)-- 24.01.09 SELECT CONVERT(VARCHAR, GETDATE(), 3)-- 09/01/24 SELECT CONVERT(VARCHAR, GETDATE(), 4)-- 09.01.24 SELE..