๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ(62)
-
[Spring Security] OncePerRequestFilter.shouldNotFilter ๋ฉ์๋ ํจ์จ์ ์ผ๋ก ์ค๋ฒ๋ผ์ด๋ฉ ํ๊ธฐ
์ด๋ฌ ์ด๋ถํฐ ์ง์ธ 3๋ถ๊ณผ ํจ๊ป ์คํ๋ง ํ ์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์๋ค. GitHub - Tiketeer/Tiketeer-BE Contribute to Tiketeer/Tiketeer-BE development by creating an account on GitHub. github.com ํด๋น ํ๋ก์ ํธ์์๋ ์๋ํฌ์ธํธ ๋ณดํธ ์์ ์ ์ํด Spring Security์ JWT๋ฅผ ์ด์ฉ ์ค์ธ๋ฐ, ์ด๋ฅผ ์ํด Spring Security์ OncePerRequestFilter๋ฅผ ๊ตฌํํ๋ JwtAuthFilter๋ฅผ ์๋์ฒ๋ผ ๋ฐ๋ก ์์ฑํด์ค ๋ค ํํฐ ์ฒด์ธ์ ์ถ๊ฐํด์ฃผ์๋ค. @Component public class JwtAuthenticationFilter extends OncePerRequestFilter { @Overr..
2024.03.23 -
Database PK ์์ฑ ์ ๋ต (without DB, Mysql)
๊ฐ์ฅ ์์ฝ๊ฒ ํ ์ด๋ธ์์ ์ฌ์ฉํ PK๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ํ ์ด๋ธ์ ์์ฑํ ๋ PK๊ฐ ๋ ์์น ์นผ๋ผ์ AUTO_INCREMENT(MySql ๊ธฐ์ค)๋ฅผ ๊ฑธ์ด์ฃผ๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ํตํ๋ฉด, ๊ฐ๋ฐ์๋ ๋ ์ฝ๋๋ฅผ ์์ฑํ ๋ PK ์นผ๋ผ์ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์์ผ๋ฉฐ DB๊ฐ ์์์ ์์ฐจ์ ์ผ๋ก ์ฆ๊ฐ์ํจ ๊ฐ์ด ๋ ์ฝ๋์ ํฌํจ๋๊ฒ ๋๋ค. ์ธ๋ฑ์ค๋ ๊ฒฐ๊ตญ DB์์ ์ฌ์ฉํ๊ธฐ ์ํ ๊ฐ๋ ์ด๊ณ , ๊ทธ ๊ฐ์ DB๊ฐ ์ง์ ์์ฑํด์ฃผ์ด ๊ฐ๋ฐ์๊ฐ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์๋ค๋ฉด ๊ทธ๊ฑธ๋ก ๋ ๊ฒ ์๋๊ฐ? ๋ผ๊ณ ์๊ฐํ ์ ์์ผ๋ ์ด๋ฌํ ๋ฐฉ์์๋ ๊ฒฐ๊ตญ ํน์ ๊ด์ ์์๋ ํ๊ณ๊ฐ ์กด์ฌํ๋ค. ์ด๋ฒ ๊ธ์์๋ ์ด ํ๊ณ๋ค์ ๋ํด ์์๋ณด๊ณ ์ด๋ฅผ ๊ทน๋ณตํ ์ ์๋ ๋๋ค๋ฅธ ๋ฐฉ์๋ค์ ๋ํด ์ดํด๋ณด๊ฒ ๋ค. DB๊ฐ ์ง์ ๊ด๋ฆฌํ๋ PK์ ๋ฌธ์ ์ 1. ๋ถ์ฐ์ฒ๋ฆฌ ํ๊ฒฝ์์ PK ๊ฐ ์ฑ๋ฒ์ ์ด๋ ค์ ์ต๊ทผ์๋ ๋๊ท๋ชจ..
2024.03.17 -
[Spring] Swagger + RequestPart๋ฅผ ํตํด ํ์ผ, Dto ๋์ ์์ฒญ ์ ๋ฐ์ ์๋ฌ ํธ๋ค๋ง
ํ์ฌ Spring Boot๋ฅผ ํตํ ๋น๋์ค ์คํธ๋ฆฌ๋ฐ ์๋ฒ๋ฅผ ๊ฐ๋ฐํ๋ ๊ฐ๋จํ ํ๋ก์ ํธ๋ฅผ ์งํ ํด๋ณด๊ณ ์๋๋ฐ, ์ด๋ฅผ ๊ฐ๋ฐํ๋ฉด์ ๋ง์ฃผํ ์๋ฌ์ ๋ํด ์๊ฐํ๊ณ ์ด๋ฅผ ํด๊ฒฐํ ๋ฐฉ์, ๊ทธ๋ฆฌ๊ณ ์ด์งธ์ ํด๊ฒฐ์ด ๋๋์ง ๊น์ง๋ ๋ค๋ค๋ณด๊ณ ์ ํ๋ค. GitHub - One-armed-boy/spring_stream_video: ๋น๋์ค ์คํธ๋ฆฌ๋ฐ ์๋ฒ with Spring boot ๋น๋์ค ์คํธ๋ฆฌ๋ฐ ์๋ฒ with Spring boot. Contribute to One-armed-boy/spring_stream_video development by creating an account on GitHub. github.com ๋ฌธ์ ์ํฉ ๋ฌ์ฌ ์๋ํฌ์ธํธ์ ๋ํด ์ง์ ์์ฒญ์ ๋ณด๋ด์ ํ ์คํธ๋ฅผ ํ ๋, ํฌ์คํธ๋งจ์ ์ฌ์ฉํ ์๋ ์๊ฒ ์ง๋ง ๊ทธ๊ฒ๋ณด๋จ ์ค์จ..
2024.03.10 -
MVCC in Mysql(with ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์์ค)
์ด๋ฒ ๊ธ์์๋ MVCC์ ๊ฐ๋ ๊ณผ ์ด๋ป๊ฒ ๋์ํ๋ ๊ฒ์ธ์ง, ๊ทธ๋ฆฌ๊ณ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์์ค์ ๊ตฌํํ ๋ ์ด๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ๊ณ ์๋์ง์ ๋ํด ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค ํ๋์ธ Mysql์ ํตํด ์ ๋ฆฌํ๊ณ ์ ํ๋ค. ๋ค์ด๊ฐ๊ธฐ ์์ ์ด๋ฒ ๊ธ์์ ์ค์ ์ ์ผ๋ก ๋ค๋ฃจ๊ฒ ๋ MVCC ์ฃผ์ ๋ก ๋ค์ด๊ฐ๊ธฐ ์ ์, ๋จผ์ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์์ค์ ๋ํ ๋ฐฐ๊ฒฝ์ง์์ด ํ์ํ๋ค. ํธ๋์ญ์ ๊ฒฉ๋ฆฌ์์ค์ด๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์ ํธ๋์ญ์ ๋ค์ด ๋์๋ค๋ฐ์ ์ผ๋ก ์คํ๋ ๋ ํด๋น ํธ๋์ญ์ ์ ์กฐํ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ผ๋ง๋ ์ํฅ์ ๋ฐ๊ฒํ ์ง์ ๋ํ ์์ค์ ์๋ฏธํ๋ค. READ UNCOMMITED, READ COMMITED, REPEATABLE READ, SERIALIZABLE์ ์ด 4๊ฐ์ง ์์ค์ผ๋ก ๊ตฌ์ฑ๋๊ณ ์ธ๊ธํ ์์์ ์ญ์์ผ๋ก ๊ฒฉ๋ฆฌ ์์ค์ด ๋์์ง๋ค. (READ ..
2024.02.25 -
ํ์ด์ง๋ค์ด์ ๋ฐฉ๋ฒ๋ก ๋น๊ต(Offset vs Cursor)
ํ์ด์ง๋ค์ด์ ์ด๋? OLTP ํ๊ฒฝ์์ ์ฌ์ฉ์์๊ฒ ๋ฐํ๋๋ ๋ฐ์ดํฐ๋ค์ ๋๋ถ๋ถ ํน์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ ์ผ๋ถ ๋ฐ์ดํฐ์ด๋ค. ์๋ฅผ ๋ค๋ฉด ์น๊ฐ๋ฐ์ ๊ฐ์ฅ ํํ ์์์ธ ๊ฒ์ํ์ด ๊ทธ๋ ๋ค. ๊ฒ์ํ์ ์ผ๋ฐ์ ์ผ๋ก ํ ํ์ด์ง์ ์ฝ 20๊ฐ์ ๊ฒ์๊ธ๋ค์ ์ต์ ์์ผ๋ก ๋ ธ์ถ์ํค๊ณ , ์ฌ์ฉ์๊ฐ ๋ค์ ํ์ด์ง๋ก ๋์ด๊ฐ๊ฒ ๋๋ฉด 21 ~ 40๋ฒ์งธ ๋ฐ์ดํฐ๊ฐ ๊ทธ์ ์์ผ ์กฐํ๋๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋๋ค. ์ด ์ํฉ์์ ์๋ฒ๋ ์ฌ์ฉ์์๊ฒ ์ ์ฒด ๊ฒ์๊ธ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด ์๋, ์ฌ์ฉ์๊ฐ ์์นํ ํ์ด์ง์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ง์ ๋ฐํํ๋๋ก API ์ค๊ณ๊ฐ ์ด๋ฃจ์ด์ง๋๋ฐ ์ด๋ฅผ ํ์ด์ง๋ค์ด์ ๋ฐฉ๋ฒ๋ก ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ํ์ด์ง๋ค์ด์ ์ข ๋ฅ ์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๋ ํ์ด์ง๋ค์ด์ ๊ธฐ๋ฒ์๋ Offset ๊ธฐ๋ฐ ํ์ด์ง๋ค์ด์ ๊ณผ Cursor(Keyset) ๊ธฐ๋ฐ ํ์ด์ง๋ค์ด์ ์ด ์กด์ฌํ๋ค. Offset ๊ธฐ..
2024.02.17 -
Exists ์ฐ์ฐ์์ ๋ํด์ (SQL)
๊ฐ์ธ์ ์ผ๋ก SQL์ Exists ์ฐ์ฐ์์ ๋ํ ์ดํด๋๊ฐ ๋ฎ์๊ณ ์ด๋ก ์ธํด ์ค์ ๋ก ํ์ฉ์ ๊ฑฐ์ ๋ชปํ๊ณ ์์๋๋ฐ, DB ์คํฐ๋๋ฅผ ์ํด ์ฑ ์ ์ฝ๋ ๋์ค ํด๋น ์ฐ์ฐ์์ ๋ํ ๋ด์ฉ์ด ๋ฑ์ฅํด์ ์ด ๊ธฐํ์ ์ด๋ฅผ ํ์คํ ์ ๋ฆฌํ๊ณ ๋์ด๊ฐ๊ณ ์ ํ๋ค. Exists ์ฐ์ฐ์๋? Exists ์ฐ์ฐ์๋ ์ฐ์ฐ์ ์ดํ์ ๋ฑ์ฅํ๋ ์๋ธ์ฟผ๋ฆฌ์ ๋ํด ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ True, ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ False๋ฅผ ๋ฐํํ๋ ์ญํ ์ ์ํํ๋ค. ๋ง๋ก๋ง ์ค๋ช ํ๋ฉด ์ดํด๊ฐ ์ด๋ ค์ฐ๋ ์ค์ ์์๋ฅผ ๋ค์ด๋ณด๋ฉด ์๋์ ๊ฐ๋ค. SELECT post.id, post.name FROM post WHERE post.user_id = 10 AND EXISTS ( SELECT 1 FROM comment WHERE comment.post_id = post.id AND..
2024.02.12