ํ‰ํ™”๋กญ๋˜ ์–ด๋А๋‚ .... ๋ฉ”์ผ์ด ๋‚ ๋ผ์™”๋‹ค...

์‹ฌ์žฅ์ด ์ฟต ํ–ˆ๋‹ค. api key๋‚˜ jwtToken์„ github์— ์˜ฌ๋ฆฌ๋ฉด ์•ˆ๋˜๋Š” ์ ์„ ์•Œ๊ณ ๋Š” ์žˆ์—ˆ์ง€๋งŒ, ์‹ ๊ฒฝ์“ธ ๊ฒจ๋ฅผ์ด ์—†์—ˆ๋‹ค. ์‚ฌ์‹ค์€ ๊ท€์ฐฎ์•„์„œ ๋”ฐ๋กœ ๋นผ์ง€ ์•Š์•˜๋˜ ๊ฑฐ์ผ ์ˆ˜๋„.....

๋กœ์ปฌ์—์„œ ์ž‘์—…ํ•œ๊ฑฐ๋ผ์„œ ๋ณ„๋กœ ๋ฌธ์ œ ๋  ์ผ์€ ์—†์—ˆ์ง€๋งŒ ๊ทธ๋ž˜๋„ ์ € ๋ฌด์„œ์šด ๋ฉ”์ผ ์ œ๋ชฉ์„ ๋ณด๊ณ  ์žˆ์ž๋‹ˆ... ๋‹น์žฅ ํ•ด๊ฒฐํ•ด์•ผ๊ฒ ๋‹ค ์‹ถ์—ˆ๋‹ค.

JWT์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์ถ”ํ›„์— ์ž‘์„ฑํ•˜๊ฒ ๋‹ค.


JWT secret key

JWT token์„ ์„œ๋ช…ํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋น„๋ฐ€ ํ‚ค๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

JWT๋ž€ ๊ณต๊ฐœ ํ‚ค์™€ ๋น„๋ฐ€ ํ‚ค๋ฅผ ์Œ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ํ† ํฐ์— ์„œ๋ช…ํ•œ๋‹ค. 
๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์œ ์ €๋ฅผ ์ธ์ฆํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. 

 

์ฆ‰, ๋น„๋ฐ€ ํ‚ค์ด๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€์— ์œ ์ถœ๋˜๋ฉด ์•ˆ๋œ๋‹ค. ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฐ„๊ณผํ•˜๋Š” ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜์ธ๋ฐ, ๋ฌด์ง€์„ฑ์œผ๋กœ git push๋ฅผ ๋‚ ๋ฆฌ๋‹ค ๋ณด๋ฉด ์–ด๋А ์ˆœ๊ฐ„ ์œ ์ถœ๋˜์žˆ๋‹ค... ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ •์‹ ์„ ๋‹จ๋”” ์ฐจ๋ฆฌ๊ณ  ์ด์™€ ๊ฐ™์€ secret key๋“ค์€ ๋”ฐ๋กœ ๋นผ์„œ .gitignore์— ์ถ”๊ฐ€ํ•ด์ฃผ์ž.

 

๋‚˜๋Š” spring boot ๊ฐœ๋ฐœํ•˜๋‹ค๊ฐ€ ์•Œ๋žŒ์ด ์™”์œผ๋‹ˆ spring boot + intelliJ ํ™˜๊ฒฝ์—์„œ๋ฅผ ์˜ˆ์‹œ๋กœ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.

 

SpringBoot + intelliJ ์—์„œ ๋น„๋ฐ€ ํ‚ค ๊ด€๋ฆฌํ•˜๊ธฐ

1. application.properties์—์„œ ๋น„๋ฐ€ ํ‚ค ๋ณต์‚ฌ

๋จผ์ €, application.properties์— ์•„๋ž˜์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ๋ถ„์˜ ๋น„๋ฐ€ ํ‚ค๊ฐ€ ๋“ฑ๋ก๋˜์žˆ์„ ๊ฒƒ์ด๋‹ค. 

์ด ํ‚ค๋ฅผ ๋ณต์‚ฌ ํ•ด๋‘๊ณ , ์—ฌ๊ธฐ์„œ๋Š” ์‚ญ์ œํ•˜์ž.

...

//๋น„๋ฐ€ ํ‚ค
jwt.secret=secretsecretsecretsecretsecretsecretsecretsecretsecret
jwt.expiration-ms=86400000

...

 

2. application-secret.properties์— ๋ณต์‚ฌ

๋ณด์•ˆ ์ด์Šˆ๊ฐ€ ์žˆ๋Š” ๊ฐ’๋“ค๋งŒ ์ €์žฅํ•ด ๋†“์„ application-secret.properties ๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ๋น„๋ฐ€ ํ‚ค๋ฅผ ๋ณต์‚ฌํ•ด์ค€๋‹ค.

//๋น„๋ฐ€ ํ‚ค
jwt.secret=secretsecretsecretsecretsecretsecretsecretsecretsecret

 

3. .gitignore์— application-secret.properties ์ถ”๊ฐ€

application-secret.properties์˜ ๊ฒฝ๋กœ๊ฐ€ .gitignore์™€ ๊ฐ™์œผ๋ฉด ํŒŒ์ผ๋ช…๋งŒ ์ถ”๊ฐ€ํ•œ๋‹ค.

...
application-secret.properties

 

๋‹ค๋ฅธ ๊ฒฝ๋กœ์— ์žˆ๋‹ค๋ฉด ๊ฒฝ๋กœ๊นŒ์ง€ ํฌํ•จํ•ด์ค€๋‹ค. ์•„๋ž˜๋Š” ๋‚ด ์˜ˆ์‹œ์ด๋‹ค.

...
src/main/resources/application-secret.properties

 

๊ตฟ! ์ด์ œ push ๋ฅผ ํ•˜๋‚˜ ๋‚ ๋ ค๋ณด๋ฉด! ๋น„๋ฐ€ ํ‚ค๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ๋ถ„๋ฆฌ ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

4. ์ฝ”๋“œ์— ์ ์šฉ ํ™•์ธ

๋งˆ์ง€๋ง‰์œผ๋กœ ์ •์˜ํ•œ jwt.secret ์ด ์‹ค์ œ ์ฝ”๋“œ์—์„œ ์ž˜ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€ ๋‹ค์‹œ ํ™•์ธํ•˜์ž.

@Value์˜ ์„ค์ • ๊ฐ’์„ plain secret key๋ฅผ ์ ์–ด๋†“์œผ๋ฉด ๋ง์งฑ ๋„๋ฃจ๋ฌต์ด๋‹ค.

   ...
    @Value("${jwt.secret}")
    private String secretKey;
   ...

+ GitGuardians

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋‚˜์—๊ฒŒ ๋ฉ”์ผ ๊ฒฝ๊ณ ๋ฅผ ์ด์ฃผ์—ˆ๋˜ ๋ฐ๊ฐ€ ๋ฐ”๋กœ GitGuardians๋‹ค. 

๋‚ด git repository์˜ ๋ณด์•ˆ์„ ์œ„ํ•ด์„œ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ๊ฐ€์ž…ํ•ด์ฃผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์ด ๋‚ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ค‘ ๋ณด์•ˆ ์ •๋ณด๊ฐ€ ์œ ์ถœ๋˜์žˆ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์†Œ์Šค์— ๋“ค์–ด๊ฐ€๋ฉด, ์–ด๋А commit, ์–ด๋А ์ฝ”๋“œ์—์„œ ์ •๋ณด ์œ ์ถœ์ด ์–ธ์ œ ์ผ์–ด๋‚ฌ๋Š”์ง€ ์•„์ฃผ ์นœ์ ˆํ•˜๊ฒŒ ์•Œ๋ ค์ค€๋‹ค!

์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐฑ์—”๋“œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์žˆ๋‹ค. ์ผ๋‹จ ๋„“๊ฒŒ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ , ์‚ญ์ œ ์š”์ฒญ์„ DELETE๋กœ ์ฒ˜๋ฆฌํ–ˆ๋‹ค. 

๋‹ค๋งŒ, ์‚ญ์ œ๋œ ๋Œ“๊ธ€์ด๋‚˜ ๊ฒŒ์‹œ๋ฌผ์„ ๋ณต๊ตฌํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ๊ณ , ๊ทธ๋ณด๋‹ค๋„ ์‚ญ์ œ๋œ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ฐธ์กฐํ•˜๋ฉด 404 ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค.()

๋ฌผ๋ก  ๋งž๋Š” ๋กœ์ง์ด์ง€๋งŒ, ์™ ์ง€ 404์—๋Ÿฌ๊ฐ€ ๋œจ๋ฉด ๊ธฐ๋ถ„์ด ์ข‹์ง€ ์•Š๋‹ค....

๊ทธ๋ž˜์„œ ์ฐพ์•„๋ณด๊ฒŒ ๋œ ๊ฒƒ์ด soft delete์ด๋‹ค. ๊ฐœ๋…์€ ์•Œ๊ณ  ์žˆ์—ˆ๋Š”๋ฐ hibernate ๊ธฐ๋Šฅ์œผ๋กœ @SoftDelete๊ฐ€ ์žˆ๋‹ค๋Š” ํฌ์†Œ์‹์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค!! ๋Œ€๋ฐ•์ด๋‹ค.

 

์‚ฌ์‹ค ๊ฒฐ๋ก ์ ์œผ๋กœ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” soft delete๋ฅผ ์•ˆํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ๊ทœ๋ชจ๊ฐ€ ์ž‘์€ ์„œ๋น„์Šค์ด๊ธฐ๋„ ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž ๊ฐœ์ธ๋‚˜ ํžˆ์Šคํ† ๋ฆฌ์— ๋‚จ๊ธฐ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.


Soft Delete(๋…ผ๋ฆฌ ์‚ญ์ œ)

๋””๋น„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ โŒ

 โžก๏ธ ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ์ ‘๊ทผ ๊ถŒํ•œ ํ•ด์ œ. ๋””๋น„์—๋Š” ์—ฌ์ „ํžˆ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ์•„ ์žˆ์Œ.

ex. is_deleted ์นผ๋Ÿผ์„ ๋งŒ๋“ค์–ด ์„ธํŒ…

UPDATE `user`
SET is_deleted = TRUE
WHERE id = ##;

 

  <์‚ฌ์šฉ ์ด์œ >

  ๋ณดํ†ต ์‚ญ์ œ ํ”„๋กœ์„ธ์Šค ์ดํ›„์—๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์šฉ์ดํ•˜๊ฒŒ ์“ฐ์ธ๋‹ค.

  • ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ ์šฉ์ด
  • ๊ธฐ๋ก ๋ณด๊ด€ (์‚ฌ์šฉ์ž ๊ธฐ๋ก์„ ํ†ตํ•œ ์„œ๋น„์Šค ๊ฐœ์„ , ํ•™์Šต, ๋ถ„์„)
  • ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ์˜ ์™ธ๋ž˜ ํ‚ค ๊ด€๊ณ„๊ฐ€ ๋Š๊ธฐ์ง€ ์•Š๊ฒŒ ํ•จ. โžก๏ธ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€
  • DELETE ์ฟผ๋ฆฌ๊ฐ€ UPDATE ์ฟผ๋ฆฌ๋ณด๋‹ค ๋А๋ฆผ.(ํŠธ๋žœ์žญ์…˜์ด๋‚˜ ์‚ญ์ œ ์ž‘์—…์ด ๋นˆ๋ฒˆํ•œ ์„œ๋น„์Šค์—์„œ๋Š” ์œ ์˜๋ฏธํ•œ ์„ฑ๋Šฅ ์ฐจ์ด๋ฅผ ๋ณด์ž„)
๐ŸŒทํŠธ๋žœ์žญ์…˜ (Transaction)
๋””๋น„์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—… ๋‹จ์œ„(์‚ฌ์šฉ์ž ๊ธฐ๋Šฅ ๊ธฐ์ค€)
- ์›์ž์„ฑ, ์ผ๊ด€์„ฑ, ๋…๋ฆฝ์„ฑ, ์ง€์†์„ฑ ์„ ์ง€๋…€์•ผ ํ•จ.

 

  <๋‹จ์ >

  ์‚ญ์ œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚˜๋„ ๋””๋น„์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ์•„์žˆ๊ธฐ์— ํ…Œ์ด๋ธ” ํฌ๊ธฐ์™€ ์ธ๋ฑ์Šค๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ปค์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์บ์‹œ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ๋‚จ์•„์žˆ๋Š” ๋ฐ์ดํ„ฐ๋„ ์ฆ๊ฐ€ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค.

 

@SoftDelete

ํด๋ž˜์Šค ์œ„์— @SoftDelete ๋ฅผ ์จ์ฃผ๋ฉด ์‚ญ์ œ์ƒํƒœ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ปฌ๋Ÿผ์ด๋‚˜ ํด๋ž˜์Šค ๋ณ€์ˆ˜๊ฐ€ ์—†์–ด๋„ ์ž๋™์œผ๋กœ boolean ํƒ€์ž…์˜ deleted ์ปฌ๋Ÿผ์ด ์ƒ์„ฑ๋œ๋‹ค.

์‚ญ์ œ ์ง„ํ–‰ ์‹œ ์ž๋™์œผ๋กœ UPDATE ์ฟผ๋ฆฌ๊ฐ€ ๋‚˜๊ฐ„๋‹ค. 

@SoftDelete

//๋˜๋Š”...
@SoftDelete(converter = ์‚ฌ์šฉ์ค‘์ธ์ปจ๋ฒ„ํ„ฐ.class, columnName = "์ปฌ๋Ÿผ๋ช…์ง€์ •๊ฐ€๋Šฅ")

  

์ฐธ๊ณ 

https://sundries-in-myidea.tistory.com/165

import * ์™€ ๊ฐ™์ด *(aestrick)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŒจํ‚ค์ง€๋‚˜ ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ค๋Š” ๊ฒƒ์„ ์™€์ผ๋“œ ์นด๋“œ import๋ผ๊ณ  ํ•œ๋‹ค. ์ž๋ฐ”, SQL ๋“ฑ ์—์„œ ๊ฐ€๋” ๋ณด์ธ๋‹ค. ๋‹จ์ˆœํžˆ ์ƒ๊ฐํ–ˆ์„ ๋•Œ๋Š” ๊ทธ๋Ÿผ ๋ชจ๋“  import์˜ ์ƒ์œ„ํ˜ธํ™˜์•„๋‹ˆ์•ผ? ๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์œ„ํ—˜ํ•œ ์ƒ๊ฐ์ด๋‹ค. ๊ทธ๋Ÿผ ์™€์ผ๋“œ ์นด๋“œ import๊ฐ€ ์™œ ์“ฐ์ด๋Š”์ง€. ์™œ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”์ง€ ์•Œ์•„๋ณด์ž.


์™€์ผ๋“œ์นด๋“œ Import

*(aestrick)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŒจํ‚ค์ง€์˜ ํ•˜์œ„ ํด๋ž˜์Šค๋“ค์„ ๋ชจ๋‘ import ํ•ด ์˜จ๋‹ค. 

import java.util.*

์œ„์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋ฉด util ๋‚ด๋ถ€์˜ ๋ชจ๋“  ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. 

 

์–ธ๋œป ๋ณด๋ฉด ๋งค์šฐ ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ๊ฐ™๋‹ค.

ํ•˜์ง€๋งŒ ์™€์ผ๋“œ์นด๋“œ import๋Š” Google JAVA convention์—์„œ๋„ ๊ทธ๋ ‡๊ณ  ์ง€์–‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์ด์—๋Š” ์น˜๋ช…์ ์ธ ๋‹จ์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์™€์ผ๋“œ์นด๋“œ Import์˜ ๋‹จ์ 

๐Ÿšจ ํด๋ž˜์Šค๋ช… ์ค‘์ฒฉ ๊ฐ€๋Šฅ์„ฑ

"๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ๊ฐ™์€ ํด๋ž˜์Šค๋ช…์„ ๊ฐ€์ง„ ํด๋ž˜์Šค๊ฐ€ ์—†๋‹ค"๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค.

์ฆ‰, ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํด๋ž˜์Šค๊ฐ€ 2๊ฐœ ์ด์ƒ์ด์–ด์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋Š” ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์˜ค๋ฅ˜ ๋ฐœ์ƒ์œผ๋กœ ์ด์–ด์ง„๋‹ค.

 

์™€์ผ๋“œ์นด๋“œ Import์— ๋Œ€ํ•œ ์˜คํ•ด

์œ„์˜ ์ •์˜์—์„œ "์™€์ผ๋“œ์นด๋“œ import๋Š” ํŒจํ‚ค์ง€์˜ ๋ชจ๋“  ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค"๋ผ๊ณ  ํ–ˆ์ง€๋งŒ, ์‹ค์ƒ ๋ชจ๋‘ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

 

๐Ÿค” 1. ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค?

NO!

- JVM์ด ํด๋ž˜์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๋Š” ์‹œ์ ์€ ๋Ÿฐํƒ€์ž„์ด๋‹ค.

- import๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„์— ์‚ฌ์šฉ๋œ๋‹ค.

โ‰ซ import๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚˜์ง€๋Š” ์•Š๋Š”๋‹ค.

 

๐Ÿค” 2. ์ปดํŒŒ์ผ ์‹œ ํด๋ž˜์Šค ๋งค์นญ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค?

์‚ฌ์‹ค์ƒ NO!

์™€์ผ๋“œ์นด๋“œ๋ฅผ ์“ฐ๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•ด๋‹น ํŒจํ‚ค์ง€์—์„œ ์‚ฌ์šฉํ•œ ํด๋ž˜์Šค๋งŒ ์ฐพ๋Š” ์ž‘์—…์„ ํ•œ๋‹ค. 

์ด๋ก ์ƒ์œผ๋กœ๋Š” ๋งค์นญ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ ๊ฐ™์ง€๋งŒ, ํ˜„๋Œ€ ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ฒ˜๋ฆฌ ์†๋„๋‚˜ IDE์˜ ์ง€์›์œผ๋กœ ์‚ฌ์‹ค์ƒ ๋ฌด์‹œ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€์ด๋‹ค.

 

intelliJ์—์„œ ์ž๋™ ์™€์ผ๋“œ์นด๋“œ import ์„ค์ • ํ•ด์ œ

intelliJ ์„ค์ •(์ปค๋ฉ˜๋“œ + ,) -> ์—๋””ํ„ฐ -> ์ฝ”๋“œ ์Šคํƒ€์ผ -> Java -> "'*'๊ฐ€ ํฌํ•จ๋œ import ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค ์ˆ˜" 100์œผ๋กœ ์„ค์ •(๊ฑ ํฐ ์ˆ˜๋กœ ์„ค์ •)

ERD๋ฅผ ๊ทธ๋ฆฌ๋‹ค๊ฐ€ VARCHAR ๋‹จ์œ„๋ฅผ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. VARCHAR์€ CHAR๊ณผ ์–ด๋–ค ์ ์ด ๋‹ค๋ฅผ์ง€ ๊ถ๊ธˆํ•ด์ ธ์„œ ์กฐ์‚ฌํ•ด๋ณด์•˜๋‹ค.


sql์—๋„ ๋‹น์—ฐํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์กด์žฌํ•œ๋‹ค. ์–ธ์ œ ์–ด๋–ค ๋ฐ์ดํ„ฐํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹์„ ์ง€ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.

FLOAT

= ์†Œ์ˆ˜์  ์•„๋ž˜ 7์ž๋ฆฌ๊นŒ์ง€ ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž ํ‘œํ˜„

(4๋ฐ”์ดํŠธ)

DOUBLE(REAL)

= ์†Œ์ˆ˜์  ์•„๋ž˜ 15์ž๋ฆฌ๊นŒ์ง€ ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž ํ‘œํ˜„

(8๋ฐ”์ดํŠธ)

INT

= ±21์–ต ๊นŒ์ง€์˜ ์ •์ˆ˜

(4๋ฐ”์ดํŠธ)

CHAR(n)

= ๊ฐ’์˜ ์‹ค์ œ ํฌ๊ธฐ์™€ ๊ด€๊ณ„์—†์ด ์ง€์ •๋œ ํฌ๊ธฐ๋งŒํผ์˜ ์ €์žฅ๊ณต๊ฐ„ ํ• ๋‹น

(1 ~ 255๋ฐ”์ดํŠธ)

→ ์‹ค์ œ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์™€ ์„ ์–ธ๋œ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์˜ ํŽธ์ฐจ๊ฐ€ ํด ๊ฒฝ์šฐ ๊ณต๊ฐ„ ๋‚ญ๋น„!

  • ๊ทธ๋ƒฅ CHAR=CHAR(1)

VARCHAR(n)

= ๊ฐ’์˜ ์‹ค์ œ ํฌ๊ธฐ๋งŒํผ ์ €์žฅ๊ณต๊ฐ„ ํ• ๋‹น

(1 ~ 65535๋ฐ”์ดํŠธ)

→ ๋ฐ์ดํ„ฐ ์ˆ˜์ •(UPDATE)์‹œ ๋นˆ๋ฒˆํ•œ ํŽ˜์ด์ง€ ์žฌ์ •๋ ฌ ๋ฐœ์ƒ ๊ฐ€๋Šฅ… ๋น„ํšจ์œจ์ …

UPDATE ํ›„์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ณด๋‹ค ํฌ๊ธฐ๊ฐ€ ํด ๊ฒฝ์šฐ, ๊ธฐ์กด ๋ฐ์ดํ„ฐ ์˜์—ญ์„ ํ๊ธฐํ•˜๊ณ  ์ƒˆ๋กœ์ด ํ• ๋‹น

→ ํฌ๊ธฐ๊ฐ€ ํฐ varchar์„ ์—ฌ๋Ÿฌ ๊ฐœ ์‚ฌ์šฉํ•˜๋ฉด row size ์ œํ•œ์— ๊ฑธ๋ฆฐ๋‹ค. ๋ฐ์ดํ„ฐ ์ „์ฒด๊ฐ€ row size์— ์˜ํ–ฅ์„ ์ค€๋‹ค.

→ ์กฐํšŒ ์š”์ฒญ์ด ์—ฌ๋Ÿฌ๋ฒˆ ์˜ค๋ฉด ๋ฒ„ํผ์— ์บ์‹ฑ๋˜์–ด ์ฝ์–ด์˜จ๋‹ค.

TEXT

= ๊ฐ’์˜ ์‹ค์ œ ํฌ๊ธฐ๋งŒํผ ์ €์žฅ๊ณต๊ฐ„ ํ• ๋‹น

(1 ~ 65535๋ฐ”์ดํŠธ)

→ ํฌ๊ธฐ๊ฐ€ ํฐ text๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์‚ฌ์šฉํ•ด๋„ row size ์ œํ•œ์— ๊ฑธ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ„๋„๋กœ ์ €์žฅ๋˜๊ณ , ๊ทธ ์กด์žฌ๋งŒ row size์— ์˜ํ–ฅ์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— 9~12๋ฐ”์ดํŠธ๋งŒ row size์— ์˜ํ–ฅ์„ ์ค€๋‹ค.

→ ์กฐํšŒ ์š”์ฒญ์ด ์—ฌ๋Ÿฌ๋ฒˆ ์˜ค๋ฉด ๋ณ„๋„ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ ๊ณต๊ฐ„๋งŒํผ ํ• ๋‹นํ•˜๊ณ  ์‚ฌ์šฉ์„ ์š”์ฒญ๋งŒํผ ๋ฐ˜๋ณตํ•œ๋‹ค.

https://chanho0912.tistory.com/108

๐Ÿ“Œ VARCHAR vs TEXT

  VARCHAR TEXT
๐Ÿ“ ๋ฐ์ดํ„ฐ ์ตœ๋Œ€ ๊ธธ์ด ์ƒ๋Œ€์ ์œผ๋กœ ์งง์„ ๋•Œ ์‚ฌ์šฉ ์ƒ๋Œ€์ ์œผ๋กœ ๊ธธ ๋•Œ ์‚ฌ์šฉ
๐Ÿ“– ํ…Œ์ด๋ธ” ์กฐํšŒ ์‹œ ์‚ฌ์šฉ ๋นˆ๋„ ์ž์ฃผ ํ•„์š” ์ž์ฃผ ํ•„์š”ํ•˜์ง€ ์•Š์Œ
๐Ÿ’พ DBMS ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ๋ฉ”๋ชจ๋ฆฌ ์ถฉ๋ถ„ํ•  ๋•Œ ์ ํ•ฉ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์ ์ผ ๋•Œ ์ ํ•ฉ
โšก ์†๋„ & ์„ฑ๋Šฅ ๋น ๋ฆ„ (๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ์—์„œ ์ง์ ‘ ์ ‘๊ทผ) ๋А๋ฆผ (๋ณ„๋„์˜ ์ €์žฅ ๊ณต๊ฐ„์—์„œ ์ฝ์–ด์•ผ ํ•จ)
๐Ÿ“‚ ์ €์žฅ ๋ฐฉ์‹ ํ…Œ์ด๋ธ” row์— ์ง์ ‘ ์ €์žฅ ์™ธ๋ถ€ ์ €์žฅ ํ›„ ํฌ์ธํ„ฐ๋กœ ๊ด€๋ฆฌ
๐ŸŒท MySQL์—๋Š” string ํƒ€์ž…์ด ์—†๋‹ค!


DATETIME

= 'YYYY-MM-DD HH:MM:SS' ํ˜•์‹

(8๋ฐ”์ดํŠธ)

TIMESTAMP

= 'YYYY-MM-DD HH:MM:SS' ํ˜•์‹

(4๋ฐ”์ดํŠธ)

→ time_zone ์‹œ์Šคํ…œ ๋ณ€์ˆ˜์™€ ๊ด€๋ จ์ด ์žˆ๊ณ  UTC ์‹œ๊ฐ„๋Œ€ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅ

JSON

= JSON ๋ฌธ์„œ๋ฅผ ์ €์žฅ

(8๋ฐ”์ดํŠธ)

+ Recent posts