๋‚ด์ผ๋ฐฐ์›€์บ ํ”„

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..
KIMHYEYUN
'๋‚ด์ผ๋ฐฐ์›€์บ ํ”„' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (3 Page)