JPA์ ํธ๋์ญ์
ํธ๋์ญ์
์ด๋? ํธ๋์ญ์
์ DB ๋ฐ์ดํฐ๋ค์ ๋ฌด๊ฒฐ์ฑ๊ณผ ์ ํฉ์ฑ์ ์ ์งํ๊ธฐ ์ํ ํ๋์ ๋
ผ๋ฆฌ์ ๊ฐ๋
๊ฐ์ฅ ํฐ ํน์ง์ ์ฌ๋ฌ ๊ฐ์ SQL์ด ํ๋์ ํธ๋์ญ์
์ ํฌํจ๋ ์ ์์ ์ด๋, ๋ชจ๋ SQL์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ์ด ๋๋ฉด DB์ ์๊ตฌ์ ์ผ๋ก ๋ณ๊ฒฝ์ ๋ฐ์ํ์ง๋ง SQL ์ค ๋จ ํ๋๋ผ๋ ์คํจํ๋ค๋ฉด ๋ชจ๋ ๋ณ๊ฒฝ์ ๋๋๋ฆผ ์์์ฑ ์ปจํ
์คํธ์ Entity ๊ฐ์ฒด๋ค์ ์ ์ฅํ๋ค๊ณ ํด์ DB์ ๋ฐ๋ก ๋ฐ์๋์ง ์์ DB์์ ํ๋์ ํธ๋์ญ์
์ ์ฌ๋ฌ ๊ฐ์ SQL์ ํฌํจํ๊ณ ์๋ค๊ฐ ๋ง์ง๋ง์ ์๊ตฌ์ ์ผ๋ก ๋ณ๊ฒฝ์ ๋ฐ์ํ๋ ๊ฒ ์ฒ๋ผ JPA์์๋ ์์์ฑ ์ปจํ
์คํธ๋ก ๊ด๋ฆฌํ๊ณ ์๋ ๋ณ๊ฒฝ์ด ๋ฐ์ํ ๊ฐ์ฒด๋ค์ ์ ๋ณด๋ฅผ ์ฐ๊ธฐ ์ง์ฐ ์ ์ฅ์์ ์ ๋ถ ๊ฐ์ง๊ณ ์๋ค๊ฐ ๋ง์ง๋ง์ SQL์ ํ๋ฒ์ DB์ ์์ฒญ์ ๋ณ๊ฒฝ์ ๋ฐ์ํจ JPA์์ ์ด๋ฌํ ํธ๋์ญ์
์ ๊ฐ๋
์ ์ ์ฉ..
๋ด์ผ๋ฐฐ์์บ ํ
JPA๋? ORM์ด๋? ๐ Obect-Relational Mapping ๋ฐ๋ณต์ ์ด๊ณ ๋ฒ๊ฑฐ๋ก์ด ์ ํ๋ฆฌ์ผ์ด์
๋จ์์์ SQL ์์
์ ์ค์ฌ์ฃผ๊ธฐ ์ํด์ ORM(๊ฐ์ฒด ๊ด๊ณ ๋งคํ)๊ธฐ์ ๋ค์ด ๋ฑ์ฅ ORM์ ๊ฐ์ฒด์ DB์ ๊ด๊ณ๋ฅผ ๋งคํํด์ฃผ๋ ๋๊ตฌ JPA๋? ๐ Java-Persistence API (์๋ฐ ORM ๊ธฐ์ ์ ๋ํ ํ์ค ๋ช
์ธ) JPA๋ Java ORM ๊ธฐ์ ์ ๋ํ์ ์ธ ํ์ค ๋ช
์ธ์ JPA๋ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ JDBC ์ฌ์ด์์ ๋์ JPA๋ฅผ ์ฌ์ฉํ๋ฉด DB ์ฐ๊ฒฐ ๊ณผ์ ์ ์ง์ ๊ฐ๋ฐํ์ง ์์๋ ์๋์ผ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅ ๋ํ ๊ฐ์ฒด๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก DB ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ์ฝ๊ฒ DB ์์
์ ์ฒ๋ฆฌ ๊ฐ๋ฅ ํ์ด๋ฒ๋ค์ดํธ(Hibernate)๋? JPA๋ ํ์ค ๋ช
์ธ์ด๊ณ , ์ด๋ฅผ ์ค์ ๊ตฌํํ ํ๋ ์์ํฌ ์ค ์ฌ์ค์ ํ์ค์ด ํ์ด๋ฒ๋ค์ดํธ..
IoC(์ ์ด์ ์ญ์ ), DI(์์กด์ฑ ์ฃผ์
) IoC๋ ์ค๊ณ์์น์ ํ๋นํ๊ณ , DI๋ ๋์์ธ ํจํด์ ํด๋น ์ข์ ์ฝ๋๋ฅผ ์ํ Spring์ IoC์ DI ๐โ๏ธ ์ข์ ์ฝ๋๋? ๊ฐ๋จํ ๋
ผ๋ฆฌ ์ค๋ณต ์ ๊ฑฐํ๊ณ ๋ช
ํํ ํํ ์ฝ๋๋ฅผ ์ฒ์๋ณด๋ ์ฌ๋๋ ์ฝ๊ฒ ์ดํดํ๊ณ ์์ ๊ฐ๋ฅ ์์กด์ฑ์ ์ต์ํ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋๋ผ๊ณ ํฌ๊ฒ ๊ตฌ์กฐ ๋ณ๊ฒฝ โ .... IoC์ ๋ํด IoC๋ DI๋ก๋ ์๋ ค์ ธ ์๋ค๋ผ๊ณ ์๊ฐํ๊ณ ์์ == DI ํจํด์ ์ฌ์ฉํ์ฌ IoC ์ค๊ณ ์์น์ ๊ตฌํํ๊ณ ์๋ค ์์กด์ฑ? public class Consumer { void eat() { Chicken chicken = new Chicken(); chicken.eat(); } public static void main(String[] args) { Consumer con..
Layer Architecture Spring์ 3 Layer Architecture ์๋ฒ ๊ฐ๋ฐ์๋ค์ ์๋ฒ์์์ ์ฒ๋ฆฌ ๊ณผ์ ์ด ๋๋ถ๋ถ ๋น์ทํจ์ ๊นจ๋ซ๊ณ , ์ฒ๋ฆฌ๊ณผ์ ์ ํฌ๊ฒ Controller, Service, Repository 3๊ฐ ๋ถ๋ฆฌ 1. Controller ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์ ์์ฒญ์ ๋ํ ๋ก์ง ์ฒ๋ฆฌ๋ Service์๊ฒ ์ ๋ด Reuqest ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ํจ๊ป ์ ๋ฌ Service์์ ์ฒ๋ฆฌ ์๋ฃ๋ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต 2. Service ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ์ ์ฒ๋ฆฌ(๋น์ฆ๋์ค ๋ก์ง) ํ์
์์๋ ์๋น์ค ์ฝ๋๊ฐ ๊ณ์ ๋น๋ํด์ง๊ณ ์์ DB ์ ์ฅ ๋ฐ ์กฐํ๊ฐ ํ์ํ ๋๋ Repository์๊ฒ ์์ฒญ 3. Repository DB ๊ด๋ฆฌ(์ฐ๊ฒฐ, ํด์ , ์์ ๊ด๋ฆฌ) DB CRUD ์์
์ ์ฒ๋ฆฌ
JDBC ๋ฑ์ฅ ๋ฐฐ๊ฒฝ ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ์์ DB์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ์ฌ๋ฌ๊ฐ์ง ์์
์ด ํ์ DB์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ์ปค๋ฅ์
์ฐ๊ฒฐ SQL์ ์์ฑํ ํ ์ปค๋ฅ์
์ ํตํด SQL ์์ฒญ ์์ฒญํ SQL์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ์๋ต ๋ฐ์ ๊ธฐ์กด์ ์ฌ์ฉํ๋ MySQL ์๋ฒ๋ฅผ PostgreSQL ์๋ฒ๋ก ๋ณ๊ฒฝํ๋ค๋ฉด? ์ปค๋ฅ์
์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ, SQL ์ ๋ฌ ๋ฐฉ๋ฒ, ๊ฒฐ๊ณผ๋ฅผ ์๋ต๋ฐ๋ ๋ฐฉ๋ฒ ๋ชจ๋ ๋ค๋ฅผ ์ ์์ ๋ฐ๋ผ์ ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ์์ ์์ฑํ๋ DB ์ฐ๊ฒฐ ๋ก์ง์ ์ ๋ถ ์์ ํด์ผ ํจ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด JDBC ํ์ค ์ธํฐํ์ด์ค ๋ฑ์ฅ JDBC๋ Java Database Connectivity๋ก DB์ ์ ๊ทผํ ์ ์๋๋ก Java์์ ์ ๊ณตํ๋ API JDBC์ ์ฐ๊ฒฐํด์ผํ๋ DB์ JDBC ๋๋ผ์ด๋ฒ๋ฅผ ์ ๊ณตํ๋ฉด DB ์ฐ๊ฒฐ ๋ก์ง์ ๋ณ๊ฒฝํ ํ์์์ด DB ๋ณ..
์๋ฒ๋? ๋คํธ์ํฌ๋? ๋คํธ์ํฌ๋ ์ฌ๋ฌ ๋์ ์ปดํจํฐ ๋๋ ์ฅ๋น๊ฐ ์๋ก ์ฐ๊ฒฐ๋์ด์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ๋์์ฃผ๋ ๊ธฐ์ ์ปดํจํฐ, ๋ผ์ฐํฐ, ์ค์์น, ํ๋ธ ๋ฑ์ ์ฅ๋น๋ค์ด ๊ฐ๊ฐ์ ์ญํ ์ ์ํํ์ฌ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์๋ก ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด์๋ IP ์ฃผ์, ์๋ธ๋ท ๋ง์คํฌ, ๊ฒ์ดํธ์จ์ด๋ฑ์ ์ ๋ณด๋ฅผ ์ค์ ํ๊ณ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ์ด์ฉํ์ฌ ํต์ ์ ํจ Client์ Server client ์ฆ, ๋ธ๋ผ์ฐ์ ์์ ์๋ฒ์ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ๊ณผ์ ์ ์ด๋ฏธ์ง์ฒ๋ผ ์ฌ์ฉ์๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด์ฉํ์ฌ ์๋ฒ์ ์ ๋ณด๋ฅผ ์์ฒญํ๊ณ ์๋ต์ ๋ฐ์ ์ด๋ ์ฌ์ฉ์์ ์์ฒญ์ด ์๋ฒ์ ๋๋ฌํ๊ธฐ ์ํด์๋ ํด๋น ์๋ฒ์ ์ ๋ณด๊ฐ ํ์ํจ ์๋ฒ์ ์ ๋ณด == IP ์ฃผ์(๊ฑฐ๋ํ ๋คํธ์ํฌ๋ง์์ ๊ฐ ์ปดํจํฐ๋ฅผ ์๋ณํ๊ธฐ ์ํ ์์น ์ฃผ์, ์ก/์์ ์ ์ด ์ฃผ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ฃจ์ด์ง) ์น ์..
์น์ ๋์๋ฐฉ์ IP ์ฃผ์๋? ๊ฑฐ๋ํ ๋คํธ์ํฌ๋ง์์ ๊ฐ ์ปดํจํฐ๋ฅผ ์๋ณํ๊ธฐ ์ํ ์์น ์ฃผ์ ๋คํธ์ํฌ์์์์ ๋ฐ์ดํฐ ์ก/์์ ์ ์ด ์ฃผ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ฃจ์ด์ง ๋ธ๋ผ์ฐ์ ๋? ํฌ๋กฌ, ์ฌํ๋ฆฌ, ์ฃ์ง์ ๊ฐ์ด ์น ํ์ด์ง, ์ด๋ฏธ์ง, ๋น๋์ค ๋ฑ์ ์ปจํ
์ธ ๋ฅผ ์ก/์์ ํ๊ณ ํํํด์ฃผ๋ ์ํํธ์จ์ด DNS(Domain Name Server)๋? ๋ธ๋ผ์ฐ์ ์์ 192.168.1.1 ๊ฐ์ ip์ฃผ์๊ฐ ์๋๋ผ naver.com ๊ณผ ๊ฐ์ ๋๋ฉ์ธ ์ด๋ฆ์ ์ฌ์ฉ ์ค๊ฐ์ ์์ฒญ์ ๋ฐ์์ค ์๋ฒ์ IP ์ฃผ์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋๋ฉ์ธ ์ด๋ฆ์ ์ค๊ณํด์ฃผ๋ ์๋ฒ๊ฐ ์ค๊ฐ์ ์กด์ฌํจ HTTP๋? ์์ฒญ์ ๋ณด๋ด๊ณ ๋ฐ๋ ์ํธ๊ฐ์ ์ฝ์์ ํ๊ณ ์๋ค๋ฉด? ์ํธ๊ฐ์ ๊ทธ ์ฝ์์ ๊ณต์ ํ๊ณ ์๋ค๋ฉด? Request URL : www.naver.com Address : 192.0.0.1 ..
staic ๋ณ์ class Person { String name = "์ด"; } public class Main { public static void main(String[] args){ Person person1 = new Person(); Person person2 = new Person(); } }Person ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด ๊ฐ์ฒด๋ง๋ค ๊ฐ์ฒด ๋ณ์ name์ ์ ์ฅํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ณ๋๋ก ํ ๋น๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์ name ๊ฐ์ ์ด๋ค ๊ฐ์ฒด๋ ๊ฐ์ ๋์ผํ ๊ฐ์ด๋ค. ์ด๋ฅผ ํญ์ ๊ฐ์ด ๋ณํ์ง ์๋ static์ ์ฌ์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ค์ผ ์ ์๋ค. class Person { static String name = "์ด"; } public class Main { public static void m..