BACKEND/SpringBoot
15
Springboot :: HikariCP Option ๊ณผ ์ฑ๋ฅ ์ต์ ํ. (Hikari ํ๋)
1
2025.01.20
Springboot :: HikariCP ๋?์ปค๋ฅ์
ํ(Connection Pooling)์ ์ ๊ณตํ๋ JDBC Datasource์ ๊ตฌํ์ฒด. ์ฌ์ ์ง์JDBC(Java Database Connectivity)์๋ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ ์ ์๋๋ก ํด์ฃผ๋ ์๋ฐ API.JDBC๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์๋ฃ๋ฅผ ์ฟผ๋ฆฌbornatnoon.tistory.com ์ฐ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ์์ HikariCP ๊ฐ ๋ญ์ง ๊ฐ๋
์ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด.์์ ๊ธ์ ์ฐธ์กฐํ๋๋ก ํ์. HikariCP ์ต์
GitHub - brettwooldridge/HikariCP: ๅ
HikariCPใปA solid, high-performance, JDBC connection pool at last.ๅ
HikariCPใปA solid, high-performanc..
Springboot :: HikariCP ๋?
2025.01.20
์ปค๋ฅ์
ํ(Connection Pooling)์ ์ ๊ณตํ๋ JDBC Datasource์ ๊ตฌํ์ฒด. ์ฌ์ ์ง์JDBC(Java Database Connectivity)์๋ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ ์ ์๋๋ก ํด์ฃผ๋ ์๋ฐ API.JDBC๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์๋ฃ๋ฅผ ์ฟผ๋ฆฌํ๊ฑฐ๋ ์
๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค. DB Connection Pool์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ ์ฐ๋ ๊ณผ์ ์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ด ํ์ํ ๋๋ง๋ค DB์ ์ฐ๊ฒฐํ์ฌ ์์
ํ๋ ๋ฐฉ์→ ํ์ํ ๋๋ง๋ค ์ฐ๋ํ์ฌ ์์
ํ ๊ฒฝ์ฐ DB ์ฐ๊ฒฐ์ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ issue ๋ฐ์→ ์น ์ดํ๋ฆฌ์ผ์ด์
์ด ์คํ๋จ๊ณผ ๋์์ ์ฐ๋ํ DB์์ ์ฐ๊ฒฐ์ ๋ฏธ๋ฆฌ ์ค์ ํด๋๋ฉด ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ!๊ทธ๋ฆฌ๊ณ ํ์ํ ๋๋ง๋ค ๋ฏธ๋ฆฌ ์ฐ๊ฒฐํด ๋ ์ํ๋ฅผ ์ด์ฉํด ๋น ๋ฅด๊ฒ DB์ ์ฐ๋ํ์ฌ ์์
์ ํ๋ฉด ๋๋ค.. ์ด๋ฐ ์์ผ๋ก๋ฏธ๋ฆฌ ..
intelliJ(Community) :: Springboot active profile ์ค์ ํ๊ธฐ (ํ๊ฒฝ ๋ณ์ ๊ธฐ๋ณธ ์ค์ )
2025.01.20
๋ณดํต ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ ๋application.yml, application-dev.yml, application-local.yml์ผ๋ก ํ์ผ์ ๋ถ๊ธฐํ์ฌ ์์ฑํ๊ณ 1. application.yml ์์ ๋์์ํฌ ๋ ๋ฐ๊ฟ์ค๋ค.spring: profiles: active: local ์๋ฅผ ๋ค๋ฉด ์ด๋ฐ ์์ผ๋ก.. 2. active profile ์ ์ง์ ํด๋๋ค.. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ intellij Community ๋ฒ์ ์ ์ฌ์ฉํ์ฌ active profile ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณผ ๊ฒ์ด๋ค.(application.yml ์ด ๋ณด๊ธฐ์๋ ์ง๊ด์ ์ด๋ ๊ฐ๋ฐ์ ์งํํ๋ฉด์ ์ฑ๊ฒจ์ผํ ๊ฒ๋ค์ด ์๊ธฐ๊ธฐ ๋๋ฌธ์..active profile ๋ก local ์ ๊ณ ์ ๊ฐ์ผ๋ก ๋๋ฉด ํธํ ๋ฏ ํ๋ค. (์ฝ๋๋ dev ๋ก ๋๊ณ ) )๋ฐฉ๋ฒ 1...
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..
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..
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..
Java, SpringBoot :: private ์์๋ฅผ private static final๋ก ์ ์ธํ๋ ์ด์
1
2023.12.28
static์ด๋? (์ ์ ์ธ, ์์ง์์ด ์๋) static ์ ์ฌ์ฉํ์ฌ ์ ์ธํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ jvm์ static ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๊ฒ ๋๋ค. static ์์ญ์ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ์ด ์์ํ๊ณ ์ข
๋ฃํ ๋๊น์ง ์ด์ ์์ด ๋ณ๋์ ์ด๊ธฐํ ๊ณผ์ ์ ํ์๋ก ํ์ง ์๊ณ static์ด ์ ์ธ๋ ๋ณ์, ๋ฉ์๋์ ๋ฐ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง๋ค. static์ ์ฌ์ฉํ๋ค๋ ์๋ฏธ๋ ํด๋น ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ๋ค๋ ์๋ฏธ. ๋์ผํ ๊ฐ์ฒด๋ก ๊ฐ๋ง ๋ฐ๊พธ์ด ์ฌ์ฉํ ์ ์๋ค๋ ์ฅ์ ์ด ์์๊ณผ ๋์์ ๋์ผํ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ง ๋ฐ๊พธ์ด ์ฌ์ฉํ๋ค๋ ์ ์์ ๋ณ์์ ๊ฐ์ ์ ์คํ๊ฒ ๋ฐ๊พธ์ด์ผ ํ๋ค๋ ์๊ฐ๋ ํด์ผํ๋ค. final์ด๋? ๋ถ๋ณ๊ณผ ๊ด๋ จ๋ ์์ฑ์ด ์๋๋ผ ์ฌํ ๋น ๋ฐฉ์ง์ ๊ด๋ จ๋ ์์ฑ. final์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ฌํ ๋น์ด ๋ฐฉ์ง๋๋ฏ๋ก, ์์์ด๋ ๊ฐ ์ฌ ์ด๊ธฐํ ๋ฑ์ด ๋ถ๊ฐ๋ฅํด์ง๋ค. public ..
Springboot(java) :: ๋ฌธ์ ๊ด๋ จ StringUtil ๋ชจ์์ง
2023.12.27
ํ์ผ๋ก ๋ณด๊ธฐ๋ ์๋์.. ์
์ฑ์ฝ๋ ็ก only java.. /** * @Class Name : StringUtil.java * @Description : ๋ฌธ์์ด ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ด๋ จ ์ ํธ๋ฆฌํฐ * @Modification Information * @author ony **/ package com.sample.controller; // ์ด๋ฆ ์์ ๋ณ๊ฒฝํจ import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.security.SecureRandom; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Locale; public ..
SpringBoot :: Log4jdbc ๋?
2
2023.11.15
Log4jdbc Log4j ๋ฅผ JDBC์ ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ์คํ์์ค ํ๋ก์ ํธ GitHub - arthurblake/log4jdbc: log4jdbc is a Java JDBC driver that can log SQL and/or JDBC calls (and optionally SQL timing info log4jdbc is a Java JDBC driver that can log SQL and/or JDBC calls (and optionally SQL timing information) for other JDBC drivers using the Simple Logging Facade For Java (SLF4J) logging system. - G... github.com ์์ ์ฝ๋๋..
SpringBoot :: Swagger API ์ฐ๋
2023.10.26
dev. environment. SpringBoot 3.1.1 Java 17 ์ค์จ๊ฑฐ(Swagger) ๋? ๊ฐ๋ฐ์๊ฐ REST API ์๋น์ค๋ฅผ ์ค๊ณ, ๋น๋, ๋ฌธ์ํํ ์ ์๋๋ก ํ๋ ํ๋ก์ ํธ REST API๋ฅผ ๋ฌธ์ํํ๋ ๋๊ตฌ์ด๋ฉฐ, API์ ๋ํ ๋ช
์ธ(Spec)์ ๊ด๋ฆฌํ๊ธฐ ์ํ ํ๋ก์ ํธ API๊ฐ ์์ ๋๋๋ผ๋ ๋ฌธ์๊ฐ ์๋์ผ๋ก ๊ฐฑ์ . 2011 ๋
์ ์ฒ์ ๋์
๋ ๊ฐ๋
๊ธฐ์กด, ์๋๋ ์์
๋ฑ ์๊ธฐ ์์ฑํ๋ ๋ฌธ์ํ API ๋ช
์ธ์์ ๋ฌ๋ฆฌ ์๋ฒ์ ์ผ์ ์
ํ
์ ํด์ฃผ๋ฉด API ๋ช
์ธ์๊ฐ ๊ฐฑ์ ๋๋ค. ๋ฐฑ์๋ ๊ฐ๋ฐ์์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ฅผ ๊ฐ๋ฐํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ ์ํต์ ํ๋ ค๋ฉด API ๋ช
์ธ์๊ฐ ๊ผญ ํ์ํ๊ฒ ๋๋๋ฐ ์ด๊ฑธ ํ๋ํ๋ ๋ช
์ธํ๊ณ ์๋ ๊ฒ๋ ๊ฝค๋ ํฐ ์ผ๋ก ํ์
๋๋ค. ์ด๋ฐ ์
๋ฌด ๋ก์ค๋ฅผ ์ค์ด๊ธฐ ์ํด ์๋ฒ ๋จ์ ์ ์ฉํ๋ ๊ฒ์ด ๋ฐ๋ก๋ฐ..