์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Python
- uri
- 2024-08-20
- http method
- ์ด๋ ธํ ์ด์
- IOC
- OpenAPI
- ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ
- ์ฝ๋์
- di
- FACTORY
- datepicker
- ํ๋ IT&E
- OOP
- Factory Method Pattern
- AndroidStudio
- 2024-08-21
- Kotlin
- Dialog
- Android Studio
- swagger
- tcp
- ์ฑ์ฉํ์ ํ
- udp
- ๊ธฐ์ด100์
- url
- URN
- reflection
- fontstyle
- menutab
dingdong coding
[ JAVA, DB ์์ฃผ ] ๊ฐ๋ฐ ๊ด๋ จ ์ฉ์ด ์ ๋ฆฌ ( ๊ฐ์ธ ํ์ต์ฉ ) ๋ณธ๋ฌธ
[ JAVA, DB ์์ฃผ ] ๊ฐ๋ฐ ๊ด๋ จ ์ฉ์ด ์ ๋ฆฌ ( ๊ฐ์ธ ํ์ต์ฉ )
๐ถ ๊ฐ๋ฐ๊ฐ๋ฐ ๐พ 2022. 6. 14. 10:15Java 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
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
์ฐธ๊ณ ํ ๋งํ ์ข์ ๊ธ
+ 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 ๋ฅผ ์ ์ํ๊ธฐ ์ํ ๊ธฐ์
์ฐธ๊ณ ํ ๋งํ ์ข์ ๊ธ
JSP
• Java ์ธ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ๋ ServerSide ์คํฌ๋ฆฝํธ ์ธ์ด
• HTML ์ฝ๋ ์์ Java ์ฝ๋
• Servelet์ ๋ณด์ํ๊ณ ๊ธฐ์ ์ ํ์ฅํ ์คํฌ๋ฆฝํธ ๋ฐฉ์ ํ์ค ( Servlet์ ๋ชจ๋ ๊ธฐ๋ฅ + ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ )
์ฐธ๊ณ ํ ๋งํ ์ข์ ๊ธ
Servlet vs JSP
• Servlet์ ์๋ฐ ์ธ์ด๋ก ์น๊ฐ๋ฐ์ ์ํด ๋ง๋ค์ด ์ง ๊ฒ์ผ๋ก ์ปจํ ์ด๋๊ฐ ์ดํดํ ์ ์๋๋ก ์์ ์๋ฐ์ฝ๋๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค. (Java ์ฝ๋ ์์ HTML ์ฝ๋ ) ๊ทธ๋ฆฌ๊ณ DB์ ํต์ , ๋น์ฆ๋์ค ๋ก์ง ํธ์ถ๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ ๊ด๋ จ ์์ data processing(Controller)์ ์ ์ฉํ๋ค.
• JSP๋ html ๊ธฐ๋ฐ์ ์๋ฐ ์ฝ๋๋ฅผ ๋ธ๋กํํ์ฌ ์ฝ์ ํ ๊ฒ์ผ๋ก presentation(View)์ ์ข๋ค. ์๋ธ๋ฆฟ์ ๋ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋๋ก ๋ง๋ค์ด ์ง ๊ฒ์ผ๋ก JSP ์์ ์ ์ฌ๋ฐฐํฌํ ํ์ ์์ด WAS๊ฐ ์ฒ๋ฆฌํ๋ค.
์ฐธ๊ณ ํ ๋งํ ์ข์ ๊ธ
WAS(Web Application Server, Web Server + Web Container)
• DB ์กฐํ, ๋ก์ง์ฒ๋ฆฌ ๋ฑ์ ์๊ตฌํ๋ ๋์ ์ปจํ ์ธ ์ ๊ณต์ ์ํด ๋ง๋ค์ด์ง Application Server
• Web Container or Servlet Container
• ์์ฒญ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ DB์์ ๊ฐ์ ธ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ง๊ฒ ๊ทธ๋ ๊ทธ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์ ๊ณตํจ์ผ๋ก์จ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ
Web Server vs WAS
์ฐธ๊ณ ํ ๋งํ ์ข์ ๊ธ
API (Application Programming interface, ์์ฉํ๋ก๊ทธ๋จ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค)
• ์์ฉํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์๋๋ก, OS, Programming Language๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ ์ดํ ์ ์๊ฒ ๋ง๋ ์ธํฐํ์ด์ค
์ฐธ๊ณ ํ ๋งํ ์ข์ ๊ธ
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 |