๐ฉ๐ป ์ ๋ฆฌ๊ธ/๐ WIL
jwt.getClaimAsString()JSON Web Token (JWT) ์์ ํน์ ํด๋ ์์ ๋ฌธ์์ด๋ก ์ถ์ถํ๋ ๋ฉ์๋ โด๏ธ claim ์ด๋? ๐ JWT์ ํฌํจ๋ ์ ๋ณด๋ก, ์ฃผ๋ก ์ฌ์ฉ์ ์ ๋ณด๋ ๊ถํ ๋ฑ๊ณผ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์์ โณ๏ธ JWT ๊ตฌ์ฑHeader : ํ ํฐ ํ์
๊ณผ ํด์ฑ ์๊ณ ๋ฆฌ์ฆ ํฌํจPayload : ํด๋ ์ ๋ฐ์ดํฐ ํฌํจSignature : ํ ํฐ์ด ๋ณ์กฐ๋์ง ์์์์ ํ์ธํ๋ ์๋ช
getClaimAsString()์ ๋์์
๋ ฅ : ํด๋ ์์ ํค๋ฅผ ์ ๋ฌ์ถ๋ ฅ : ํด๋น ํด๋ ์์ ๊ฐ์ ๋ฌธ์์ด๋ก ๋ฐํ// JWT ๊ฐ์ฒด๊ฐ ์๋ค๊ณ ๊ฐ์ String username = jwt.getClaimAsString("username");String role = jwt.getClaimAsString("role");System..
๐ฉ๐ป ์ ๋ฆฌ๊ธ/๐ WIL
ํ์ ํ๋ก์ ํธํ ๋ DTO๋ ๋ง์ด ์ฌ์ฉํ์ง๋ง, Resource ๊ฐ๋
์ ์ฌ์ฉํ ์ ์ด ์์๋ค.Resource๊ฐ ๋ญ๋ฐ ? ResourceRESTful API์์ ํด๋ผ์ด์ธํธ๊ฐ ์ ๊ทผํ๊ณ ์กฐ์ํ ์ ์๋ ๋ฆฌ์์ค๐ REST API์์ ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๊ณตํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฒด ์ค๋ฌด ํ๋ก์ ํธ์์๋ Resource๋ฅผ RequestBody๋ก ๋ฐ์ ํ DTO๋ก ๋ค์ convert ํ๊ณ ์์convert๋ DTO๋ฅผ ์๋น์ค ๊ณ์ธต์์ ์ฌ์ฉํ๊ณ ๋ค์ Resource๋ก convertํ์ฌ ๋ฐํํจ DTO (Data Transfer Object)๋ฐ์ดํฐ ์ ์ก์ฉ ๊ฐ์ฒด๋ก, ๋คํธ์ํฌ ๊ฐ ๋๋ ๋ ์ด์ด ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ฌ์ฉ ์ปจํธ๋กค๋ฌ์ ์๋น์ค ๊ณ์ธต ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉ์น ์์ฒญ์ด๋ ์๋ต ๋ฐ์ดํฐ Entity๋ฐ์ดํฐ๋ฒ ์ด์ค์์..
๐ฉ๐ป ์ ๋ฆฌ๊ธ/๐ WIL
@ToString(doNotUseGetters = true)toString() ๋ฉ์๋ ์๋ ์์ฑgetter ๋ฉ์๋ ์ฌ์ฉํ์ง ์๊ณ ํ๋์ ๊ฐ์ ์ง์ ์ ๊ทผํ์ฌ toString() ๋ฉ์๋ ์์ฑ @VersionJPA/Hibernate์์ ์ํฐํฐ์ ๋ฒ์ ๊ด๋ฆฌ ๐ @Version์ด ๋ถ์ ํ๋๋ ์ํฐํฐ์ ๋ฒ์ ์ ๋ํ๋DB ๋์์ฑ ๋ฌธ์ ๋ฐฉ์งํ๋ ๋ฐ ์ฌ์ฉ๋๊ด์ ๋ฝ(Optimistic lock) ์ง์์ํฐํฐ๊ฐ ์์ ๋ ๋๋ง๋ค ์๋์ผ๋ก ์ฆ๊ฐ DB์์ ์ํฐํฐ๋ฅผ ์
๋ฐ์ดํธํ ๋, ํด๋น ์ํฐํฐ์ ๋ฒ์ ์ด ์ด์ ์ ๋ก๋๋ ๋ฒ์ ๊ณผ ์ผ์นํ์ง ํ์ธ ๋ง์ฝ ์ผ์นํ์ง ์๋๋ค๋ฉด, ๋ค๋ฅธ ํธ๋์ญ์
์ด ํด๋น ์ํฐํฐ๋ฅผ ๋จผ์ ์์ ํ์ผ๋ฏ๋ก OptimisticLockException ๋ฐ์ โณ๏ธ ๋๊ด์ ๋ฝ (Optimistic Locking) ์ด๋ ?๐ ๋ฐ์ดํฐ๋ฒ ์ด..