Notice
Recent Posts
Link
Today
Total
10-06 00:17
๊ด€๋ฆฌ ๋ฉ”๋‰ด

dingdong coding

[ JAVA, DB ์œ„์ฃผ ] ๊ฐœ๋ฐœ ๊ด€๋ จ ์šฉ์–ด ์ •๋ฆฌ ( ๊ฐœ์ธ ํ•™์Šต์šฉ ) ๋ณธ๋ฌธ

๐ŸฐJAVA/Basic

[ JAVA, DB ์œ„์ฃผ ] ๊ฐœ๋ฐœ ๊ด€๋ จ ์šฉ์–ด ์ •๋ฆฌ ( ๊ฐœ์ธ ํ•™์Šต์šฉ )

๐Ÿถ ๊ฐœ๋ฐœ๊ฐœ๋ฐœ ๐Ÿพ 2022. 6. 14. 10:15

Java Language ํŠน์ง•

•  ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ 

   : Java Application์€ ํด๋ž˜์Šค ํŒŒ์ผ์— ์ €์žฅ๋˜๊ณ  JVM์— ๋กœ๋“œ๋˜๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ 

   : Application์€ JVM์—์„œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ์™€ ์žฅ์น˜์—์„œ ์‹คํ–‰๊ฐ€๋Šฅ

•  ๊ฐ์ฒด ์ง€ํ–ฅ

  : C ๋ฐ C++์˜ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ทจํ•˜๊ณ  ์ด๋ฅผ ๊ฐœ์„ ํ•œ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด ์ž…๋‹ˆ๋‹ค. 

  : ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ์˜ฎ๊ฒจ์™€ ํ˜„์‹ค ์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ๋“ค์„ ๊ฐ์ฒด๋กœ ๋ณด๊ณ  ๊ทธ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ๊ฐœ๋ฐœํ•˜๊ณ ์ž ํ•˜๋Š” ํŠน์ง•๊ณผ ๊ธฐ๋Šฅ์„ ๋ฝ‘์•„์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๊ฒƒ

•  ์ž๋™ Garbage ์ˆ˜์ง‘ 

  : ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น ๋ฐ ํ• ๋‹น ํ•ด์ œํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์ด ํ•ด๋‹น ์ž‘์—…์— ๋ถ€๋‹ด์„ ๊ฐ–์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

•  ํ’๋ถ€ํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 

  : ์ž…/์ถœ๋ ฅ, ๋„คํŠธ์›Œํ‚น ๋ฐ ๋‚ ์งœ ์กฐ์ž‘๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

 

JDK (Java Development Kit, JDK)

•  ์ž๋ฐ” ๊ฐœ๋ฐœ ํ‚คํŠธ, ์ž๋ฐ” ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋“ค๋กœ ์ด๋ค„์ง„ ํŒจํ‚ค์ง€ 

•  JDK ์‚ฌ์šฉํ•˜๋ฉด ์ž๋ฐ” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปดํŒŒ์ผํ•˜๊ณ  JVM์—์„œ ์‹คํ–‰๊ฐ€๋Šฅํ•จ ๋˜ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํŒจํ‚ค์ง•ํ•˜๊ณ  ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ ์ œ๊ณต 

•  ๊ฐœ๋ฐœ์ž๋“ค์ด JVM๊ณผ JRE์— ์˜ํ•ด ์‹คํ–‰๋˜๊ณ  ๊ตฌ๋™๋  ์ˆ˜ ์žˆ๋Š” ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ

 

JRE (Java Runtime Enviroment, JRE)

 ์ž๋ฐ” ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ, JVM์„ ์ƒ์„ฑํ•˜๋Š” ๋””์Šคํฌ ์ƒ์˜ ๋ถ€๋ถ„. ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋“ค๋กœ ๊ตฌ์„ฑ๋œ ํŒจํ‚ค์ง€ 

 ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•œ ๋…๋ฆฝํ˜• ๊ตฌ์„ฑ์š”์†Œ๋กœ์จ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋™์‹œ์— JDK์˜ ์ผ๋ถ€์ด๊ธฐ๋„ ํ•จ

 

JAVA API (Java Application Programming Interface)

  ๊ฐœ๋ฐœ์ž๊ฐ€ Java ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์ „ ํŒจํ‚ค์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ์Œ

  ๋ฌธ์ž์—ด ์กฐ์ž‘, ๋‚ ์งœ/์‹œ๊ฐ„ ์ฒ˜๋ฆฌ, ๋„คํŠธ์›Œํ‚น ๋ฐ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ตฌํ˜„(์˜ˆ: ๋ชฉ๋ก, ๋งต, ์Šคํƒ ๋ฐ ๋Œ€๊ธฐ์—ด)์„ ํฌํ•จํ•œ ๋งŽ์€ ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž‘์—…์„ ์™„๋ฃŒํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณต

  JDK์™€ JRE๋Š” Java API (Java Application Programming Interface )๋ฅผ ๊ณต์œ 

 

JVM (Java Virtual Machine, JVM)

 ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ , ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ์ž๋ฐ” ํ”Œ๋žซํผ ๊ตฌ์„ฑ์š”์†Œ 

 ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ด์ฃผ๋Š” ๊ฐ€์ƒ ๋จธ์‹ 

  ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ .java ํŒŒ์ผ์„ ์ปดํŒŒ์ผ ํ•˜๋ฉด .class๋ผ๋Š” ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ค€๋‹ค. ์ด ๋•Œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๊ฐ€ ๊ธฐ๊ณ„์–ด๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์šด์˜์ฒด์ œ์—์„œ ๋ฐ”๋กœ ์‹คํ–‰์ด ๋˜์ง€ ์•Š๋Š”๋ฐ. ์ด ๋•Œ ์šด์˜์ฒด์ œ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์„ํ•ด์ฃผ๋Š” ๊ฒƒ์ด JVM

 

Matthew Tyson ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๋ผ์ดํ”„ ์‚ฌ์ดํด

Java Memory ๊ตฌ์กฐ 

 

 

•  ๋ฉ”์„œ๋“œ ์˜์—ญ 

  :  JVM์ด ์‹คํ–‰๋˜๋ฉด์„œ ์ƒ๊ธฐ๋Š” ๊ณต๊ฐ„์œผ๋กœ static ๋ณ€์ˆ˜, ์ „์—ญ๋ณ€์ˆ˜, ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค ์ •๋ณด๋“ค์ด ์˜ฌ๋ผ๊ฐ„๋‹ค.

  :  ์ฆ‰, ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ •๋ณด์™€ ํ•จ๊ป˜ ํด๋ž˜์Šค ๋ณ€์ˆ˜(static variable)๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ.

  :  JVM์€ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์—์„œ ํŠน์ • ํด๋ž˜์Šค๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค์˜ ํด๋ž˜์Šค ํŒŒ์ผ(*.class)๋ฅผ ์ฝ์–ด๋“ค์—ฌ, ํ•ด๋‹น ํด๋ž˜์Šค์— ๋Œ€         ํ•œ ์ •๋ณด๋ฅผ ๋ฉ”์†Œ๋“œ ์˜์—ญ์— ์ €์žฅ

  : ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค๋ฅผ ๋กœ๋”๊ฐ€ ์ฝ๊ณ  ํด๋ž˜์Šค ๋ณ„๋กœ ๋ถ„๋ฅ˜ํ•ด์„œ ์ €์žฅ.

  : ๋ชจ๋“  ์Šค๋ ˆ๋“œ์—์„œ ์ •๋ณด๊ฐ€ ๊ณต์œ ๋จ

 

  Runtime Constant Pool(์ƒ์ˆ˜ ํ’€)

  : ์ƒ์ˆ˜์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑํ•œ ์ƒ์ˆ˜์— ๋Œ€ํ•ด ์ตœ์šฐ์„ ์œผ๋กœ ์ฐพ์•„๋ณด๊ณ  ์—†์œผ๋ฉด ์ƒ์ˆ˜ ํ’€์— ์ถ”๊ฐ€ํ•œ ํ›„ ๊ทธ      ์ฃผ์†Œ๊ฐ’์„ ๋ฆฌํ„ดํ•ด์คŒ 

 

•  ํž™

  : new ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๋™์ ํ• ๋‹น๋œ ๊ฐ์ฒด๋“ค์ด ์ €์žฅ๋˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ์˜ํ•ด ๊ด€๋ฆฌ๋œ๋‹ค.

  : ์ฆ‰, ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ. ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ฎ์€ ์ฃผ์†Œ์—์„œ ๋†’์€ ์ฃผ์†Œ์˜ ๋ฐฉํ–ฅ์œผ๋กœ        ํ• ๋‹น Reference Type์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

  : ๋ชจ๋“  ์Šค๋ ˆ๋“œ์—์„œ ์ •๋ณด๊ฐ€ ๊ณต์œ ๋จ

 

•  ์Šคํƒ 

  : ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ๋ฉ”์†Œ๋“œ์˜ ์Šคํƒ ํ”„๋ ˆ์ž„์ด ์ €์žฅ๋˜๋Š” ์˜์—ญ.

  : ์ง€์—ญ๋ณ€์ˆ˜, ๋ฉ”์„œ๋“œ ๋“ฑ์ด ํ• ๋‹น๋˜๋Š” LIFO ๋ฐฉ์‹ ๋ฉ”๋ชจ๋ฆฌ. 

  : ์Šคํƒ ์˜์—ญ์€ ๋ฉ”์†Œ๋“œ์˜ ํ˜ธ์ถœ๊ณผ ํ•จ๊ป˜ ํ• ๋‹น๋˜๋ฉฐ, ๋ฉ”์†Œ๋“œ์˜ ํ˜ธ์ถœ์ด ์™„๋ฃŒ๋˜๋ฉด ์†Œ๋ฉธ ๋งŒ์•ฝ ์ง€์—ญ๋ณ€์ˆ˜์ด์ง€๋งŒ Reference Type์ธ        ๊ฒฝ์šฐ Heap์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๊ฐ’์„  Stack์— ์ €์žฅํ•ด์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋จ

  : ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆ˜๋ช…์ด ์งง์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•จ

 

•  PC Register

  : ์Šค๋ ˆ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด์„œ ์ƒ๊ธฐ๋Š” ๊ณต๊ฐ„.

  : ์Šค๋ ˆ๋“œ๊ฐ€ ์–ด๋Š ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋Š”์ง€ ๊ทธ ์ฃผ์†Œ๋ฅผ ๋“ฑ๋ก, JVM์ด ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ˜„์žฌ ์œ„์น˜๋ฅผ ์ €์žฅํ•˜๋Š” ์—ญํ• 

 

•  Native Method Stack

  : Java๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ๊ตฌ์„ฑ๋œ ๋ฉ”์†Œ๋“œ ์‹คํ–‰์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ณต๊ฐ„ 

 

Maven vs Gradle

์ฐธ๊ณ ํ•  ๋งŒํ•œ ์ข‹์€ ๊ธ€ 

 

๋ฉ”์ด๋ธ(Maven)๊ณผ ๊ทธ๋ž˜๋“ค(Gradle)์˜ ๊ฐœ๋… ๋ฐ ๋น„๊ต

์Šคํ”„๋ง๊ณผ ์Šคํ”„๋ง๋ถ€ํŠธ๋ฅผ ๊ณต๋ถ€ ํ•˜๋ ค๋˜ ์ค‘ maven๊ณผ gradle์„ ์•Œ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. maven๊ณผ gradle์ด ๋นŒ๋“œ๊ด€๋ฆฌ๋„๊ตฌ์ธ ๊ฒƒ์€ ์•Œ๊ณ ์žˆ์ง€๋งŒ ์ž์„ธํ•œ ๊ฐœ๋…์€ ๋ชจ๋ฅด๊ธฐ์— maven๊ณผ gradle ๊ฐ๊ฐ์˜ ๊ฐœ๋…๊ณผ ์ •ํ™•ํ•œ ์ฐจ์ด์ ์„ ์•Œ

dev-coco.tistory.com

+ Gradle์€ ์˜์กด๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•จ๊ป˜ ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค.

+ Maven์€ ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๋นŒ๋“œ ๋„๊ตฌ.

 

MVC 1

•  ์›น ๋ธŒ๋ผ์šฐ์ € ์š”์ฒญ์„ JSP๊ฐ€ ์ฒ˜๋ฆฌ JSP๊ฐ€ Controller์™€ View ๊ธฐ๋Šฅ ๋ชจ๋‘ ๋‹ด๋‹นํ•˜๋Š” ํ˜•ํƒœ๋กœ JSP ํ•˜๋‚˜๋กœ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํŽ˜์ด์ง€์˜ ํ๋ฆ„์ด ๋‹จ์ˆœํ•˜๊ณ  ๊ตฌ์กฐ๊ฐ€ ๊ฐ„๋‹จํ•ด ๊ตฌํ˜„๋‚œ์ด๋„๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ html์ฝ”๋“œ์™€ java ์ฝ”๋“œ๊ฐ€ ๊ฐ™์ด ์‚ฌ์šฉ๋˜๋ฉด์„œ ์›น ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๋ณต์žกํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. 

 

MVC 2

•  ์›น ๋ธŒ๋ผ์šฐ์ € ์š”์ฒญ์„ controller์—์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  ์ฒ˜๋ฆฌ๋ฅผ JSP์—์„œ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์„œ๋ธ”๋ฆฟ์„ ๋งŒ๋“ค์–ด ์—ญํ•  ๋ถ„๋‹ด์„ ํ•˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์ฆ‰, MVC1๊ณผ ๋‹ค๋ฅด๊ฒŒ Controller, View๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋Š” View๋งŒ JSP๊ฐ€ ๋‹ด๋‹นํ•˜๊ณ  ํ๋ฆ„์„ ์ œ์–ดํ•ด์ฃผ๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ํ•ด๋‹นํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ์˜ ์—ญํ• ์„ ์„œ๋ธ”๋ฆฟ์ด ๋‹ด๋‹นํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” M, V, C ์ค‘์—์„œ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด, ๊ทธ๊ฒƒ๋งŒ ๊บผ๋‚ด์–ด ์ˆ˜์ •ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•ด์ง€๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

 

Reflection

•  ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค ํƒ€์ž…์„ ์•Œ์ง€ ๋ชปํ•ด๋„ ๊ทธ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ, ํƒ€์ž…, ๋ณ€์ˆ˜๋“ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์ž๋ฐ” AP

•  ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๋ฌด์‹œํ•œ ์ฑ„ ๋Ÿฐํƒ€์ž„ ์ƒํ™ฉ์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ ธ์™€ ์‹คํ–‰ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ๋™์ ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ–‰ํœ˜ 

•  ๋™์ ์ธ ์–ธ์–ด๊ฐ€ ๊ฐ€์ง„ ํŠน์ง•์œผ๋กœ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์œ ์—ฐ์„ฑ์žˆ๋Š” ๋™์ž‘์„ ์œ„ํ•ด ์ž์ฃผ ์‚ฌ์šฉ ex ) intelliJ ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ๊ณผ ๊ฐ™์€..   

 

mybatis

•  ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง€์ •ํ•œ SQL, ์ €์žฅ ํ”„๋กœ์‹œ์ €, ๋งคํ•‘์„ ์ง€์›ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

•  ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค์ฝ”๋“œ์—์„œ SQL๋ฌธ์žฅ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ณ„๋„์˜ XML ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ณ  ์ด ๋‘˜์„ ์„œ๋กœ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™

 

JDBC

•  ์ž๋ฐ”์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์ž๋ฐ” API๋กœ ์‘์šฉํ”„๋กœ๊ทธ๋žจ๊ณผ DBMS ๊ฐ„์˜ ํ†ต์‹ ์„ ์ค‘๊ฐ„์—์„œ ๋ฒˆ์—ญํ•ด์ฃผ๋Š” ์—ญํ•  

 

์ถ”์ƒํด๋ž˜์Šค vs ์ธํ„ฐํŽ˜์ด์Šค

•  ์ถ”์ƒํด๋ž˜์Šค :  ๊ตฌ์ฒดํ™” ๋˜์ง€ ์•Š์€ ์ถ”์ƒ๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜๋‚˜ ์ด์ƒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค. ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—  ์ž์‹ ์˜ ์ƒ์„ฑ์ž๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ ํ• ์ˆ˜ ์—†๊ณ , ๊ฐ์ฒด๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌ์ฒดํ™” ์‹œ์ผœ์•ผ ํ•œ๋‹ค. ์ฆ‰, ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•ด ์ƒ์œ„ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

•  ์ธํ„ฐํŽ˜์ด์Šค : ์™„์ „ ์ถ”์ƒ์ด๋ผ๊ณ  ์ด์•ผ๊ธฐ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ถ”์ƒํด๋ž˜์Šค์™€ ๋‹ค๋ฅด๊ฒŒ ๋ฉค๋ฒ„๋ณ€์ˆ˜์™€ ๊ตฌ์ฒดํ™”๋œ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค. ์ƒ์ˆ˜์™€ ์ถ”์ƒ๋ฉ”์†Œ๋“œ๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.  ์ฆ‰ ๋ชจ๋“  ๋ฉ”์„œ๋“œ๊ฐ€ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋กœ ์ด๋ฃจ์–ด์ง„ ํด๋ž˜์Šค

 

+ ์ธํ„ฐํŽ˜์ด์Šค ์žฅ์  : ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํŒ€ ์ž‘์—… ์‹œ ๊ฐœ๋ฐœ์ฝ”๋“œ์™€ ๊ฐ์ฒด๊ฐ€ ์„œ๋กœ ํ†ต์‹ ํ•˜๋Š” ์ ‘์  ์—ญํ•  ์ง€์›. ๊ฐœ๋ฐœ ์ฝ”๋“œ์—์„œ ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ฅด๋”๋ผ๋„ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ ๋ช…๋งŒ ์•Œ๋ฉด ๋‹ค๋ฅธ ํŒ€์˜ ์ž‘์—…์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์•„๋„๋จ. ๋˜ํ•œ ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ์ˆ˜์ •๋˜๋”๋ผ๊ณ  ๊ฐœ๋ฐœ ์ฝ”๋“œ ๋ถ€๋ถ„์€ ์ˆ˜์ •ํ•˜์ง€ ์•Š์•„๋„ ๋จ. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ํŒ€ ๋‹จ์œ„๋กœ ํฐ ํ”„๋กœ์ ํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ง„ํ–‰์ด ๊ฐ€๋Šฅ 

 

+ ์ฐธ๊ณ ๋กœ JAVA8 ๋ถ€ํ„ฐ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ๋””ํดํŠธ ๋ฉ”์„œ๋“œ์™€ ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Java vs C

•  Java : ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด, ํด๋ž˜์Šค๋กœ ์ธํ•ด ์žฌ์‚ฌ์šฉ์„ฑ์ด ์žˆ๊ณ , ๋‹คํ˜•์„ฑ, ์บก์Šํ™” ๋“ฑ์˜ ์žฅ์ ์ด ์žˆ์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์†๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆผ

•  C : ์ ˆ์ฐจ์ง€ํ–ฅ์–ธ์–ด๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ์–ด๊ฐ€๋Š” ๋ฐฉ์‹. C์–ธ์–ด๋Š” ํ•˜๋“œ์›จ์–ด๋ฅผ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋กœ ์†๋„๋ฅผ ์š”ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๋“ฑ์—์„œ ์‚ฌ์šฉ.

 

Framework vs Library

•  Framework : ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์ œ์–ดํ•˜๊ณ  ๋Œ€์‹  ์‹คํ–‰. ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ์ž์ฒด์ ์œผ๋กœ ์ œ์–ดํ•œ๋‹ค.  ex) JUnit 

•  Library  : ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ์ง์ ‘ ์ œ์–ด์˜ ํ๋ฆ„์„ ๋‹ด๋‹น. ํ•„์š”ํ•œ ์ƒํ™ฉ์— ๋”ฐ๊ฐ€ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋‹ค.

 - ์‹คํ–‰ ํ๋ฆ„์— ๋Œ€ํ•œ ์ œ์–ด๊ถŒ์ด ์–ด๋”” ์žˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.

 

Array vs ArrayList

•  ๋‘˜ ๋‹ค ๋ฐฐ์—ด์ด๋ผ๋Š” ์ ์€ ๋™์ผํ•˜๋‚˜, Array๋Š” ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•˜๋Š” ๋ฐ˜๋ฉด, ArrayList๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ 

•  Array๋Š” Obejct ๋ฟ ์•„๋‹ˆ๋ผ int, double...๋“ฑ ๋„ ๋‹ด์„ ์ˆ˜ ์žˆ์ง€๋งŒ ArrayList๋Š” ๊ฐ์ฒดํ˜•(Reference, object)๋งŒ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.

•  ๋”ฐ๋ผ์„œ ์ •์ˆ˜๋ฅผ ArrayList์— ๋„ฃ์„ ๊ฒฝ์šฐ Integer ํ˜•์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ intํ˜•์€ ๋ถˆ๊ฐ€๋Šฅ 

•  Array ๊ณ ์ •๊ธธ์ด, ArrayList ๊ฐ€๋ณ€๊ธธ์ด 

 

ArrayList vs LinkedList

•  ArrayList๋Š” ๊ฒฐ๊ตญ ๋ฐฐ์—ด์ด๋ฏ€๋กœ ๊ธธ์ด๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐฐ์—ด์— ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ๋ฐฐ์—ด์˜ ์šฉ๋Ÿ‰์ด ๊ฐ€๋“์ฐจ์žˆ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ด์ฃผ์–ด์•ผํ•จ. ์ด ๋•Œ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์ด ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์—ฐ์†ํ•ด์„œ ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ด๋ฏธ ๋‹ค๋ฅธ ๊ฐ’์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ, ์ƒˆ๋กœ์šด ์œ„์น˜์— ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋˜์–ด์•ผ ํ•˜๋„ ์ด๋Š” ๋ชจ๋“  ์š”์†Œ๋ฅผ ์˜ฎ๊ธฐ๊ฒŒ ๋œ๋‹ค. ๋˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ์— ์—ฌ์œ  ๊ณต๊ฐ„์ด ์—†๋Š” ๊ฒฝ์šฐ ์—๋Ÿฌ ๋ฐœ์ƒ 

•  LinkedList๋Š” ํ•œ ๊ฐœ์˜ ๋…ธ๋“œ๋Š” ๋‹ค๋ฅธ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ์— ๊ณต๊ฐ„์  ์ œ์•ฝ์ด ArrayList์— ๋น„ํ•ด ์ž์œ ๋กœ์›€ 

 

  Array List LinkedList
์ ‘๊ทผ O(1) O(n)
์ถ”๊ฐ€ O(n) O(1)
์‚ญ์ œ O(n) O(1)

 

์ง๋ ฌํ™” (Serialization)

•  ์ž๋ฐ”์—์„œ ์ž…์ถœ๋ ฅ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์€ ์ŠคํŠธ๋ฆผ์ด๋ผ๋Š” ๋ฐ์ดํ„ฐ ํ†ต๋กœ๋ฅผ ํ†ตํ•ด ์ด๋™ํ•ด์•ผํ•˜์ง€๋งŒ ๊ฐ์ฒด๋Š” ๋ฐ”์ดํŠธ ํ˜•์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ๋กœ ์ „์†กํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•จ ๋”ฐ๋ผ์„œ ๊ฐ์ฒด๋ฅผ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ, ์ฆ‰ ๊ฐ์ฒด์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ŠคํŠธ๋ฆผ์— ์“ฐ๊ธฐ์œ„ํ•ด ์—ฐ์†์ ์ธ serial ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 

↔ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ฐ›์€ ์ง๋ ฌํ™”๋œ ๊ฐ์ฒด๋ฅผ ๋‹ค์‹œ ์›๋ž˜๋Œ€๋กœ ๋Œ๋ฆฌ๋Š” ๊ฒƒ์€ ์—ญ์ง๋ ฌํ™”

 

SerialVersionUID

•  ์ง๋ ฌํ™”๋œ ๊ฐ์ฒด๋ฅผ ์—ญ์ง๋ ฌํ™” ํ•  ๋•Œ์—” ์ง๋ ฌํ™” ๋‹น์‹œ ํด๋ž˜์Šค์™€ ๊ฐ™์€ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”๋ฐ ํด๋ž˜์Šค ๋ช…์ด ๊ฐ™๋”๋ผ๋„ ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ ์—ญ์ง๋ ฌํ™”๋Š” ์‹คํŒจํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋ž˜์Šค ์ผ์น˜์—ฌ๋ถ€๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š” ๊ธฐ์ค€์œผ๋กœ SerialVersionUID๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.

 

Spring Boot Library

•   spring-boot-starter-web

    •   spring-boot-starter-tomcat : ํ†ฐ์บฃ (์›น์„œ๋ฒ„)

    •   spring-webmvc: ์Šคํ”„๋ง ์›น MVC

 

•  spring-boot-starter-thymeleaf : ํƒ€์ž„๋ฆฌํ”„ ํ…œํ”Œ๋ฆฟ ์—”์ง„(View)

 

•  spring-boot-starter(๊ณตํ†ต): ์Šคํ”„๋ง ๋ถ€ํŠธ + ์Šคํ”„๋ง ์ฝ”์–ด + ๋กœ๊น…

    •  spring-boot

        •  spring-core

    •  spring-boot-starter-logging

        •   logback, slf4j

 

Test  Library

•  spring-boot-starter-test

    •   junit: ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ

    •   mockito: ๋ชฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

    •   assertj: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ข€ ๋” ํŽธํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ฒŒ ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

    •   spring-test: ์Šคํ”„๋ง ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ง€์›

 

Tomcat

    •  ๋™์  ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(WAS) 8080 port

    •  Apache  ์†Œํ”„ํŠธ์›จ์–ด ์žฌ๋‹จ์˜ WAS

        •  Apache  =  Web Server, Tomcat = WAS 

 

Servlet

  ์›น ๊ธฐ๋ฐ˜ ์š”์ฒญ์— ๋Œ€ํ•œ ๋™์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ Server Side์—์„œ ๋Œ์•„๊ฐ€๋Š” ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ

  Java ์ฝ”๋“œ ์•ˆ์— HTML ์ฝ”๋“œ (ํ•˜๋‚˜์˜ ํด๋ž˜์Šค)

  ์ „๋‹ฌ๋ฐ›์€ HTTP Request ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฐ๊ณผ Web Page ๋ฅผ ์ œ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ 

 

์ฐธ๊ณ ํ•  ๋งŒํ•œ ์ข‹์€ ๊ธ€ 

 

[Web] Servlet์ด๋ž€ - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

JSP

  Java ์–ธ์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜๋Š” ServerSide ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด

  HTML ์ฝ”๋“œ ์•ˆ์— Java ์ฝ”๋“œ 

  Servelet์„ ๋ณด์™„ํ•˜๊ณ  ๊ธฐ์ˆ ์„ ํ™•์žฅํ•œ ์Šคํฌ๋ฆฝํŠธ ๋ฐฉ์‹ ํ‘œ์ค€ ( Servlet์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ + ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ )

 

์ฐธ๊ณ ํ•  ๋งŒํ•œ ์ข‹์€ ๊ธ€ 

 

[Web] JSP๋ž€ (Java Server Pages) - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

Servlet vs JSP

 

  Servlet์€ ์ž๋ฐ” ์–ธ์–ด๋กœ ์›น๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด ์ง„ ๊ฒƒ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์ˆœ์ˆ˜ ์ž๋ฐ”์ฝ”๋“œ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. (Java ์ฝ”๋“œ ์•ˆ์— HTML ์ฝ”๋“œ ) ๊ทธ๋ฆฌ๊ณ  DB์™€ ํ†ต์‹ , ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ํ˜ธ์ถœ๊ณผ ๊ฐ™์ด ๋ฐ์ดํ„ฐ ๊ด€๋ จ ์ž‘์—… data processing(Controller)์— ์œ ์šฉํ•˜๋‹ค. 

  JSP๋Š” html ๊ธฐ๋ฐ˜์— ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ๋ธ”๋กํ™”ํ•˜์—ฌ ์‚ฝ์ž…ํ•œ ๊ฒƒ์œผ๋กœ  presentation(View)์— ์ข‹๋‹ค. ์„œ๋ธ”๋ฆฟ์„ ๋” ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด ์ง„ ๊ฒƒ์œผ๋กœ JSP ์ˆ˜์ • ์‹œ ์žฌ๋ฐฐํฌํ•  ํ•„์š” ์—†์ด WAS๊ฐ€ ์ฒ˜๋ฆฌํ•œ๋‹ค. 

 

์ฐธ๊ณ ํ•  ๋งŒํ•œ ์ข‹์€ ๊ธ€ 

 

[Web] Servlet๊ณผ JSP์˜ ์ฐจ์ด์™€ ๊ด€๊ณ„ - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

WAS(Web Application Server, Web Server + Web Container)

  DB ์กฐํšŒ, ๋กœ์ง์ฒ˜๋ฆฌ ๋“ฑ์„ ์š”๊ตฌํ•˜๋Š” ๋™์  ์ปจํ…์ธ  ์ œ๊ณต์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ Application Server

  Web Container or Servlet Container 

  ์š”์ฒญ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ DB์—์„œ ๊ฐ€์ ธ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋งž๊ฒŒ ๊ทธ๋•Œ ๊ทธ๋•Œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ

 

Web Server vs WAS 

์ฐธ๊ณ ํ•  ๋งŒํ•œ ์ข‹์€ ๊ธ€ 

 

WAS(Web Application Server)๋ž€?

#37 ์ง€๋‚œ ํฌ์ŠคํŒ…์€ Web ์„œ๋ฒ„์— ๋Œ€ํ•ด์„œ ํฌ์ŠคํŒ…ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” Web ์„œ๋ฒ„์™€ ๋—„๋ ˆ์•ผ ๋—„ ์ˆ˜ ์—†๋Š” WAS์— ๋Œ€ํ•ด์„œ ํฌ์ŠคํŒ…์„ ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. 1. WAS(Web Application Server)๋ž€? ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ๊ฐ™์€ ํด๋ผ์ด์–ธ

goldsony.tistory.com

 

 

API (Application Programming interface, ์‘์šฉํ”„๋กœ๊ทธ๋žจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค)

  ์‘์šฉํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก, OS, Programming Language๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ์ธํ„ฐํŽ˜์ด์Šค 

 

์ฐธ๊ณ ํ•  ๋งŒํ•œ ์ข‹์€ ๊ธ€ 

 

[IT์šฉ์–ด] API๋ž€ ๋ฌด์—‡์ธ๊ฐ€? — Steemit

์•ˆ๋…•ํ•˜์„ธ์š”. ์–ด๋ฏธ์ƒˆ์ž…๋‹ˆ๋‹ค. ์ •๋ง ์˜ค๋žœ๋งŒ์— ์ŠคํŒ€์ž‡์— ํฌ์ŠคํŒ…์„ ์ง„ํ–‰ํ•˜๋Š”๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋ฐ”์œ ์ผ์ƒ์„ ๋ณด๋‚ด๊ณ  ์žˆ๋‹ค๋ณด๋‹ˆ, 1์ผ 1ํฌ์ŠคํŒ…์ด ์•„๋‹Œ 1์ฃผ 1ํฌ์ŠคํŒ…๋„ ์–ด๋ ค์šด ์ƒํ™ฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ

steemit.com

 

static

  Java์—์„œ static์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ JVM์˜ static ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ„๋‹ค. ( ํ•œ๋ฒˆ ํ• ๋‹น๋˜์–ด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ ํ•ด์ œ๋จ )

  static์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๊ณต์œ ํ•˜๊ฒ ๋‹ค ๋Š” ์˜๋ฏธ

  ์ฒ˜์Œ ์„ค์ •๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

  ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ  ๊ณตํ†ต์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

 

์ฆ‰, GC ์˜ ๊ด€๋ฆฌ ์˜์—ญ ๋ฐ–์— ์กด์žฌํ•˜๋ฏ€๋กœ static์„ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ์ข…๋ฃŒ์‹œ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋œ ์ฑ„๋กœ ์กด์žฌํ•˜๋ฏ€๋กœ ์‹œ์Šคํ…œ์˜ ํผํฌ๋จผ์Šค์— ์•…์˜ํ–ฅ์„ ์คŒ

  static heap 
๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๊ธฐ์ค€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰๋˜๋Š” ์ˆœ๊ฐ„` ์—ฐ์‚ฐ์ด ์‹คํ–‰๋˜๋Š” ์ˆœ๊ฐ„ (new ์—ฐ์‚ฐ์ž)
๋ฉ”๋ชจ๋ฆฌ ์ •๋ฆฌ ๊ธฐ์ค€ (Garbage Collector) ์ •๋ฆฌ ๋Œ€์ƒ X GC์— ์˜ํ•ด ์ •๋ฆฌ์ฃ”

  static์œผ๋กœ ์„ ์–ธ๋œ ๋ฉ”์„œ๋“œ๋‚˜ ๋ณ€์ˆ˜๋ฅผ ๊ฐ๊ฐ ์ •์  ๋ฉ”์„œ๋“œ, ์ •์  ๋ณ€์ˆ˜๋ผ๊ณ  ํ•จ 

  ์ •์  ๋ณ€์ˆ˜๋Š” ์ด๋“ค์ด ๊ตฌ์ฒด์ ์ธ ์ธ์Šคํ„ด์Šค ์˜์—ญ์ด ์•„๋‹ˆ๊ณ  ํด๋ž˜์Šค ์ž์ฒด์— ์†ํ•œ๋‹ค๋Š” ์˜๋ฏธ 

  ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด)๋ฅผ ํ†ตํ•˜์ง€ ์•Š๊ณ ์„œ๋„(=์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ ์„œ๋„) ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ  ๋ณ€์ˆ˜ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

// ์ผ๋ฐ˜์  ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ 
Printer printer = new Printer();
printer.doSomething();

// ์ •์  ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
Printer.doSomething();

 

ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ ์‹œ  ๊ฒฝ์šฐ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— static์„ ๋ถ™์—ฌ์„œ ์‚ฌ์šฉํ•˜๋ฉฐ, static์„ ๋ถ™์ธ ๋ฉ”์„œ๋“œ๋Š” ํ˜ธ์ถœ์‹œ๊ฐ„์ด ์งง์•„์ ธ์„œ ํšจ์œจ์ด ๋†’์•„์ง€๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

 

final 

  ์žฌํ• ๋‹นํ•  ์ˆ˜ ์—†๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ. ์ƒ์†, ์ตœ์ดˆ ์ดˆ๊ธฐํ™” ์ดํ›„ ๋‹ค์‹œ ์ดˆ๊ธฐํ™”๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ ํ•˜์ง€๋งŒ ๊ฐ’์€ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

  ํ•˜์ง€๋งŒ ๋Œ€๊ฒŒ Collectionsํƒ€์ž…(Map,List,Set)์— ํ•ด๋‹นํ•˜๊ณ , ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ธ int, boolean, char ์—์„œ๋Š” ์žฌํ• ๋‹น์ด ์•ˆ๋˜๋‹ˆ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋‹ค.

 

this

  ์ธ์Šคํ„ด์Šค๊ฐ€ ์ž๊ธฐ ์ž์‹ ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ‚ค์›Œ๋“œ = ๊ฐ์ฒด ์ž์‹ ์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. 

  ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ 

  this๋ฅผ ํ†ตํ•ด ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ ๋ฐ ์ƒ์„ฑ์ž์—์„œ ์ž๊ธฐ ์ž์‹ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•จ 

class Car {
    String color; // ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜
    String gearType;
    int door; 
    
    Car(String color, String gearType, int door){
        this.color = color; 
        this.gearType = gearType;
        this.door = door;
    }
}

this ๋Š” ์œ„ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์ด ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์™€ ๊ฐ™์„ ๋•Œ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์™€ ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

Car() ์ƒ์„ฑ์ž ์•ˆ์—์„œ์˜ this.color๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์ด๊ณ , color๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ •์˜๋œ ์ง€์—ญ๋ณ€์ˆ˜์ด๋‹ค.

static ๋ฉ”์„œ๋“œ์—์„œ๋Š” this๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค.

 

Stream

  Java์˜ Stream์€ ์ปฌ๋ ‰์…˜์˜ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฐธ์กฐํ•˜์—ฌ ๋žŒ๋‹ค์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ผ์ข…์˜ ๋ฐ˜๋ณต์ž

 

ํ•„๋“œ Field

  ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•  ๋•Œ ํด๋ž˜์Šค์˜ ์†์„ฑ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์„ ์–ธํ•˜๋Š” ๋ณ€์ˆ˜๋“ค์„ ํ•„๋“œ๋ผ๊ณ  ํ•œ๋‹ค.

class class_name {
    static data_type variable_name; // ํด๋ž˜์Šค ๋ณ€์ˆ˜
    data_type variable_name; // ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜
    
    data_type method_name() {
        data_type variable_name; // ์ง€์—ญ ๋ณ€์ˆ˜
    }
}

1)  ์ง€์—ญ๋ณ€์ˆ˜ 

-  ๋ฉ”์†Œ๋“œ ์•ˆ์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์ƒ์„ฑ๋˜๊ณ  ๋ฉ”์†Œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ์‚ญ์ œ๋œ๋‹ค.

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

-  ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ์ดˆ๊ธฐํ™” ํ•ด์•ผํ•œ๋‹ค. 

 

2)  ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ 

-  ๋ฉ”์†Œ๋“œ ๋ฐ–์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜ ์ค‘ static ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์„ ์–ธ๋œ ๋ณ€์ˆ˜

- ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ƒ์„ฑ๋˜๋ฉฐ ๊ฐ์ฒด๊ฐ€ ์‚ญ์ œ๋  ๋•Œ ์‚ญ์ œ๋œ๋‹ค.

-  heap ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋ฉฐ ๊ฐ ๊ฐ์ฒด์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜์–ด ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ผ๊ณ ๋„ ํ•œ๋‹ค.

 

3)  ํด๋ž˜์Šค ๋ณ€์ˆ˜ 

-  ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ฅผ ๋ฉ”์†Œ๋“œ ๋ฐ–์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜ ์ค‘ static ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ์–ธํ•œ ๋ณ€์ˆ˜

-  ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ์ƒ์„ฑ๋˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ ์‚ญ์ œ๋œ๋‹ค.

-  ๋‹จ ํ•œ ๋ฒˆ๋งŒ ์ƒ์„ฑ๋˜๊ณ  ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ํด๋ž˜์Šค๋ช….๋ณ€์ˆ˜๋ช…์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

-  ๋ฉ”์†Œ๋“œ ์˜์—ญ์— ํ• ๋‹น๋˜๊ณ  ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค) ๊ฐ„์— ๊ณต์œ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณต์œ ๋ณ€์ˆ˜๋ผ๊ณ ๋„ ํ•œ๋‹ค. 

 

์ž๋ฐ”์˜ ํด๋ž˜์Šค ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™” ์ˆœ์„œ

•  static ๋ณ€์ˆ˜ ์„ ์–ธ๋ถ€, ํ•„๋“œ ๋ณ€์ˆ˜ ์„ ์–ธ๋ถ€, ์ƒ์„ฑ์ž Block ์ˆœ์œผ๋กœ 

•  static ๋ณ€์ˆ˜ ์„ ์–ธ๋ถ€๋Š” ํด๋ž˜์Šค๊ฐ€ ๋กœ๋“œ๋  ๋•Œ  Methd area์— ์˜ฌ๋ผ๊ฐ€ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ดˆ๊ธฐํ™” ๋œ๋‹ค. ํ•„๋“œ ์„ ์–ธ๋ถ€๋Š” ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ heap ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€ ์ƒ์„ฑ์ž Block๋ณด๋‹ค ์•ž์„œ ์ดˆ๊ธฐํ™” ๋œ๋‹ค. ์ƒ์„ฑ์ž Block์€ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ Heap ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๋Š”๋ฐ ํ•„๋“œ ๋ณ€์ˆ˜๊ฐ€ ์ด‰๊ธฐํ™” ๋  ๋•Œ๊นŒ์ง€ JVM์—์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ๋กœํ‚น 

 

์ดˆ๊ธฐํ™” ์‹œ์ 
  ํด๋ž˜์Šค๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”์‹œ์  : ํด๋ž˜์Šค๊ฐ€ ์ฒ˜์Œ ๋กœ๋”ฉ๋  ๋•Œ ๋‹จ ํ•œ๋ฒˆ ์ดˆ๊ธฐํ™” 
  ์ธ์Šคํ„ด์Šค๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”์‹œ์  : ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ๊ฐ ์ธ์Šคํ„ด์Šค๋ณ„๋กœ ์ดˆ๊ธฐํ™”

 

์ดˆ๊ธฐํ™” ์ˆœ์„œ
  ํด๋ž˜์Šค๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”์ˆœ์„œ : ๊ธฐ๋ณธ๊ฐ’ -> ๋ช…์‹œ์ ์ดˆ๊ธฐํ™” -> ํด๋ž˜์Šค ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ
  ์ธ์Šคํ„ด์Šค๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”์ˆœ์„œ : ๊ธฐ๋ณธ๊ฐ’ -> ๋ช…์‹œ์ ์ดˆ๊ธฐํ™” -> ์ธ์Šคํ„ด์Šค ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ -> ์ƒ์„ฑ์ž

 

public static void main(String[] args) 

 publilc  : ๋ชจ๋“  ๊ณณ์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅ

 -  private: ์ž๊ธฐ ์ž์‹  ํด๋ž˜์Šค์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

 -  protected: ์ž๊ธฐ ์ž์‹  ํด๋ž˜์Šค์™€ ์ƒ์†๋œ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ  (๊ฐ™์€ ํŒจํ‚ค์ง€)

static : ์ €์žฅ์†Œ์— ํ•ญ์ƒ ์ƒ์ฃผํ•˜๋„๋ก ์„ค์ • 

void : ํ•จ์ˆ˜๊ฐ€ ๋๋‚  ๋•Œ ๋ฆฌํ„ด ๊ฐ’์ด ์—†๋‹ค 

  - main ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด(ํ˜น์€ ๋น„์ •์ƒ์ ์œผ๋กœ ์ฃฝ์œผ๋ฉด) ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋œ๋‹ค.

  - ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด๊ฐ€ ์ข…๋ฃŒ๋˜๊ธฐ ๋•Œ๋ฌธ์— return ๊ฐ’์˜ ์˜๋ฏธ๋ฅผ ์ง€๋‹ ์ˆ˜ ์—†๋‹ค.

 main : ๋ชจ๋“  ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋ณธ์ด ๋˜๋Š” ํ•จ์ˆ˜ 

String[ ]  args

 - args ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ

-  args ๋Š” ๋ณ€์ˆ˜๋ช…

  public static void : ์ด ๋ฉ”์ธ ๋ฉ”์„œ๋“œ๋Š” ์ž๋ฐ” ์‹คํ–‰ ์‹œ ์ œ์ผ ๋จผ์ € ๋™์ž‘ํ•˜๊ณ  ์–ด๋Š ๊ฐ์ฒด์—์„œ๋“  ์ ‘๊ทผ๊ฐ€๋Šฅํ•˜๊ณ  ์ž๋ฐ”๊ฐ€ ์ปดํŒŒ์ผ ๋˜๋Š” ์ˆœ๊ฐ„ ์ •์˜๋˜๋Š” ๋Œ๋ ค์ฃผ๋Š” ๊ฐ’์ด ์—†๋Š” ํ•จ์ˆ˜

 

Logging

  ์‹œ์Šคํ…œ ๋™์ž‘์‹œ ์‹œ์Šคํ…œ์˜ ์ƒํƒœ์™€ ์ž‘๋™์ •๋ณด๋ฅผ ์‹œ๊ฐ„์˜ ๊ฒฝ๊ณผ์— ๋”ฐ๋ผ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ ( ๊ทธ ๊ธฐ๋ก์ด ๋กœ๊ทธ )

  ๋กœ๊น…์„ ํ•˜๋Š” ์ด์œ ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋™์ž‘์ƒํƒœ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ๊ทธ ๋™์ž‘์„ ํŒŒ์•…ํ•ด ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ฌธ์ œ๋ฅผ ์ฐพ์•„๋‚ด๊ณ  ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•จ.

  ์ฆ‰, ์†Œํ”„ํŠธ์›จ์–ด ๋””๋ฒ„๊น…์ด๋‚˜ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•˜์—ฌ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๊ณณ์— ์‚ฌ์šฉ๋œ๋‹ค.

 

•  ๋กœ๊ทธ๊ฐ€ ๊ฐ€์ง€๋Š” ์žฅ์  

- ์ƒํ™ฉ๋ณ„ Level ์ง€์ •ํ•˜์—ฌ Level๋ณ„ ๋ฉ”์‹œ์ง€๋ฅผ ์„ ํƒ ๊ฐ€๋Šฅ 

- ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์— ๋Œ€ํ•œ ํ๋ฆ„๊ณผ ์—์–ด ํ™•์ธ ๊ฐ€๋Šฅ

- ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฌ์šด ์‚ฌ์šฉํ™˜๊ฒฝ ์กฐ์„ฑ ๊ฐ€๋Šฅ 

- ๋ชจ๋“ˆ ๋ณ„๋กœ ์œ ์—ฐํ•˜๊ฒŒ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ ๊ฐ€๋Šฅ

- ์ž์œ ๋กœ์šด ์ถœ๋ ฅ ์œ„์น˜ ๋ฐ ๋‹ค์–‘ํ•œ ์ถœ๋ ฅํ˜•์‹ ์ง€์›

 

Model ๊ฐ์ฒด

  Model ๊ฐ์ฒด๋Š” Controller์—์„œ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„ View๋กœ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด

    * Servlet์˜ request.setAttribute()์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•จ

  addAttribute("key", "value") ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด view์— ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ key, value ํ˜•์‹์œผ๋กœ ์ „๋‹ฌ

 

์˜์†์„ฑ ( Persistence )

  ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์–ด๋„ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ์˜ ํŠน์„ฑ

  ์˜์†์„ฑ์„ ๊ฐ–์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋‹จ์ง€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ๋งŒ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋ฉด ๋ชจ๋‘ ์žƒ์–ด๋ฒ„๋ฆฌ๊ฒŒ ๋œ๋‹ค.

 

๋•Œ๋ฌธ์— ํŒŒ์ผ ์‹œ์Šคํ…œ, ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ˜น์€ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•˜์—ฌ ์˜์†์„ฑ์„ ๋ถ€์—ฌ

 

  Persistence Layer : ํ”„๋กœ๊ทธ๋žจ์˜ ์•„ํ‚คํ…์ฒ˜์—์„œ ๋ฐ์ดํ„ฐ์— ์˜์†์„ฑ์„ ๋ถ€์—ฌํ•ด์ฃผ๋Š” ๊ณ„์ธต

  JDBC๋ฅผ ์ด์šฉํ•ด ์ง์ ‘ ๊ตฌํ˜•ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Persistence Framwork๋ฅผ ์ด์šฉํ•œ ๊ฐœ๋ฐœ์ด ๋งŽ์Œ

 

 

 

1) Presentation Layer  - UI ๊ณ„์ธต

 

2) Application Layer - ์„œ๋น„์Šค ๊ณ„์ธต

 

3) Business logic Layer - ๋„๋ฉ”์ธ ๊ณ„์ธต

 

4) Data access Layer - ์˜์† ๊ณ„์ธต

 

 

 

 

 

SQL Mapper์™€ ORM

  Persistence Framework๋Š” SQL Mapper์™€ ORM์œผ๋กœ ๋‚˜๋‰œ๋‹ค. 

 

1. ORM์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด๋ฅผ ์ž๋ฐ” ๊ฐ์ฒด๋กœ ๋งคํ•‘ํ•จ์œผ๋กœ์จ ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ  SQL์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ฃผ์ง€๋งŒ, SQL Mapper๋Š” SQL์„ ๋ช…์‹œํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

2. ORM์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ '๊ด€๊ณ„'๋ฅผ Object์— ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋ผ๋ฉด, SQL Mapper๋Š” ๋‹จ์ˆœํžˆ ํ•„๋“œ๋ฅผ ๋งคํ•‘์‹œํ‚ค๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋ผ๋Š” ์ ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

 

  SQL Mapper

    - SQL ๋ฌธ์žฅ์œผ๋กœ ์ง์ ‘ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ฃฌ๋‹ค.

    - ์ฆ‰, SQL Mapper๋Š” SQL์„ ๋ช…์‹œํ•ด ์ค˜์•ผํ•œ๋‹ค.

    - ex) MyBatis, Jdbc Templates 

 

• ORM

    - ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๊ฐ„์ ‘์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ฃฌ๋‹ค.

    - ๊ฐ์ฒด์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋งคํ•‘(์—ฐ๊ฒฐ)ํ•ด ์ฃผ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

    - Persistence API ๋ผ๊ณ ๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

    - ex) JPA, Hibernate ๋“ฑ 

 

RowMapper

    •  ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๊ฐ์ฒด๋กœ ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ญํ• 

    •  SELECT๋กœ ๋‚˜์˜จ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

List<User> userList = jdbcTemplate.queryForObject(
        "SELECT * FROM USER WHERE id=?",
        UserMapper,
        1000L);

  ResultSet์— ๊ฐ’์„ ๋‹ด์•„์™€์„œ User ๊ฐ์ฒด์— ์ €์žฅํ•œ ํ›„ count ๋งŒํผ ๋ฐ˜๋ณต 

public User mapRow(ResultSet rs, int count) throws SQLException {

    User user = new User();
    actor.setFirstName(resultSet.getString("name"));
    actor.setLastName(resultSet.getString("description"));
    
    return user;
};

  Lamdba

(rs, count) -> new User(
                     rs.getString("name"),
                     rs.getString("description")
                   )

  queryForObject

// select ๊ตฌ๋ฌธ
String SELECT_BY_ID = "SELECT * FROM USER WHERE id=?";

// user ๋ฐ˜ํ™˜ ๋ฐ›๊ธฐ
User user = jdbcTemplate.queryForObject(
        SELECT_BY_ID,
        (rs, count) -> new User(
                     rs.getString("name"),
                     rs.getString("description")
                   ),
        1000L);

***  ์ˆœ์ˆ˜ JDBC๋Š” ๊ฒฐ๊ณผ๊ฐ’์„ ResultSet์œผ๋กœ ๋ฐ˜ํ™˜ ex ) ResultSet์œผ๋กœ ๊ฐ’์„ ๋ฐ›์€ ํ›„์— User ๊ฐ์ฒด์— ๋‹ด๊ธฐ 

ResultSet rs = stat.excuteQuery("SELECT * FROM USER");

while(rs.next()) {
     user = new User();
     user.setId(rs.getInt(1));
     user.setName(rs.getString(2));
     user.setDescription(rs.getString(3));
     
     userList.add(user);
}

 

Generic

:  ์ž๋ฐ”์—์„œ ์ œ๋„ค๋ฆญ(generic)์ด๋ž€ ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…(data type)์„ ์ผ๋ฐ˜ํ™”ํ•œ๋‹ค(generalize)๋Š” ๊ฒƒ์„ ์˜๋ฏธ

:  ์ œ๋„ค๋ฆญ์€ ํด๋ž˜์Šค๋‚˜ ๋ฉ”์†Œ๋“œ์—์„œ ์‚ฌ์šฉํ•  ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ปดํŒŒ์ผ ์‹œ์— ๋ฏธ๋ฆฌ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ ์‹œ์— ๋ฏธ๋ฆฌ ํƒ€์ž…์ด ์ •ํ•ด์ง€๋ฏ€๋กœ, ํƒ€์ž… ๊ฒ€์‚ฌ๋‚˜ ํƒ€์ž… ๋ณ€ํ™˜๊ณผ ๊ฐ™์€ ๋ฒˆ๊ฑฐ๋กœ์šด ์ž‘์—…์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

 

- ์ปดํŒŒ์ผ ์‹œ์— ๋ฏธ๋ฆฌ ํƒ€์ž… ๊ฒ€์‚ฌ(type check)๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์ด ์žˆ๋‹ค.

1 )  ํด๋ž˜์Šค๋‚˜ ๋ฉ”์†Œ๋“œ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด์˜ ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค

2 )  ๋ฐ˜ํ™˜๊ฐ’์— ๋Œ€ํ•œ ํƒ€์ž… ๋ณ€ํ™˜ ๋ฐ ํƒ€์ž… ๊ฒ€์‚ฌ์— ๋“ค์–ด๊ฐ€๋Š” ๋…ธ๋ ฅ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

+ ์ปฌ๋ ‰์…˜์—์„œ ์ œ๋„ˆ๋ฆญ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  

์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„ ์›Œํฌ๋Š” ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ˜๋ณต๋ฌธ ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋ฉด ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์‚ฐ์‹œํ‚ค๋Š” ๊ฒƒ์ด ์‰ฝ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„ ์›Œํฌ์— ๋‹ด์„ ์ž๋ฃŒํ˜•์„ ํ•˜๋‚˜๋กœ ๋‹ด์•„์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๋Š” ๊ฒƒ(์ œ๋„ˆ๋ฆญ)์„ ๊ถŒ์žฅ. 

 

์ ‘๊ทผ์ œ์–ด์ž

์ž๋ฐ” ํด๋ž˜์Šค์—์„œ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋‚˜ ๋ฉ”์†Œ๋“œ ์•ž์— ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ฒ”์œ„๊นŒ์ง€๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ ‘๊ทผ์ œ์–ด์ž๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ •๋ณด ์€๋‹‰์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

• public : ์ ‘๊ทผ์ œํ•œ์ด ์—†๋‹ค. ์–ด๋””์—์„œ๋‚˜ ํ•ด๋‹น ๋ฉค๋ฒ„๋ณ€์ˆ˜๋‚˜ ๋ฉ”์†Œ๋“œ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅ

• protected : ๋™์ผ ํŒจํ‚ค์ง€, ์™ธ๋ถ€ ํŒจํ‚ค์ง€์˜ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์ ‘๊ทผ์ œ์–ด์ž๋ฅผ ์‚ฌ์šฉ

• default : ์•„๋ฌด๋Ÿฐ ์ ‘๊ทผ์ œ์–ด์ž๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด default๋กœ ์ฒ˜๋ฆฌ. ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅ. 

• private : ๊ฐ™์€ ํด๋ž˜์Šค์—์„œ๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅ. private ๋ฉค๋ฒ„๋ณ€์ˆ˜์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก setter/getter ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉ

 

Wrapper ํด๋ž˜์Šค

-  ์ž๋ฐ”์˜ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜• (int, float, double, byte, char ๋“ฑ)์„ ์œ„ํ•œ ํด๋ž˜์Šค

-  ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๊ฐ์ฒด์ด๊ฑฐ๋‚˜ ๋ฐ˜ํ™˜ ๊ฐ’์ด ๊ฐ์ฒด์ธ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์„ ๊ฐ์ฒดํ˜•์œผ๋กœ ์‚ฌ์šฉ. int์˜ Wrapper ํด๋ž˜์Šค๋Š” Integer๋กœ ํ•ด๋‹น ํด๋ž˜์Šค์˜ parseInt ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ์ทจ๊ธ‰ํ•˜๋Š” "1"์„ ์ˆซ์ž๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

-  ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„ ์›Œํฌ์™€ ์ œ๋„ค๋ฆญ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ฒฝ์šฐ Wrapper ํด๋ž˜์Šค๋ฅผ ์จ์•ผํ•ฉ๋‹ˆ๋‹ค.

 

์˜ค๋ฒ„๋ผ์ด๋”ฉ (method overriding) 

  ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์žฌ์ •์˜ ํ•˜๋Š” ๊ฒƒ 

  ๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…๊ณผ ๊ฐฏ์ˆ˜๋„ ๋™์ผ

 

์˜ค๋ฒ„๋กœ๋”ฉ ( method overloading )

  ๋™์ผํ•œ ๋ฉ”์†Œ๋“œ ๋ช…์„ ๊ฐ€์ง„ ๋ฉ”์†Œ๋“œ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…๋‹ˆ๋‹ค ๊ฐฏ์ˆ˜๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ

  ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด๋‚˜ ๊ฐฏ์ˆ˜์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋„๋ก ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

DTO, DAO, VO

  VO ( Value Object ) : ๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ์ฒด. ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ณดํ†ต ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์œผ๋กœ ํ•œ๋‹ค. 

  DTO ( Data Transfer Object ) : VO์™€ ๊ฐ™์ด ๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋กœ ์ฐจ์ด์ ์€ ๋ฐ์ดํ„ฐ ํ•ธ๋“ค๋ง์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด. DTO๋ฅผ ํ†ตํ•ด ๊ณ„์ธต( Controller, View, business layer, persistence layer ) ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ

  DAO ( Data Access Object ) : DB์™€ data์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜์ง€ ์œ„ํ•œ ๋กœ์ง๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์„ ์ „๋‹ดํ•˜๋„๋ก ๋งŒ๋“  ๊ฐ์ฒด.  ๋Œ€๋ถ€๋ถ„ CRUD API ์ œ๊ณต

 

 

 

** ๊ณ„์†ํ•ด์„œ ์ถ”๊ฐ€ํ•˜๋Š” **

'๐ŸฐJAVA > Basic' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JAVA ] List Interface  (0) 2022.06.20
[JAVA ] Collection  (0) 2022.06.20
[ JAVA ] Optional  (0) 2022.06.15
[ JAVA ] Lambda  (0) 2022.06.14
[ JAVA ] HashMap  (0) 2022.06.14
Comments