RESTful ํ•˜๋‹ค๋ž€?

RESTful ํ•˜๋‹ค๋ž€ ๋ฌด์—‡์ผ๊นŒ : REST์˜ ์›๋ฆฌ๋ฅผ ์ž˜ ์ง€ํ‚ค๋Š” ์‹œ์Šคํ…œ์„ RESTful ํ•˜๋‹ค๋ผ๊ณ  ํ•œ๋‹ค. RESTfulํ•œ API๋ž€? : โ€˜๊ฐ ๊ตฌ์„ฑ์š”์†Œ๋“ค์˜ ์—ญํ• ์ด ์™„๋ฒฝํ•˜๊ฒŒ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋Š” ๊ฒƒโ€™ URI๋Š” ๊ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก ์šฉ์ดํ•œ ํ‘œํ˜„๋ฐฉ์‹์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ๊ฐ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํ–‰์œ„๋ฅผ HTTP ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ Uniform(์ผ๊ด€์„ฑ)ํ•˜๊ฒŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. Uniformํ•œ ํ˜•์‹์— ์˜ํ•ด ์ œํ•œ ๋ฐ›๋Š” ์„ธ๋ถ€ ๊ธฐ๋Šฅ์˜ ๊ฒฝ์šฐ JSON, XML ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ๋ณ„๋„๋กœ ์ •์˜ํ•จ์œผ๋กœ์จ, ๊ธฐ๋Šฅ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ โ€˜URI์˜ ๋ช…ํ™•ํ•œ ์ •์˜โ€™ ์ด๋‹ค. ์–ด๋–ป๊ฒŒ URI์„ ์„ค๊ณ„ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€ ์Šฌ๋ž˜์‹œ(/)๋ฅผ ์ด์šฉํ•ด์„œ ๊ณ„์ธต ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค. ์—ฌ๋Ÿฌ ๋ฆฌ์†Œ์Šค๋“ค์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•˜๋Š” ์ปฌ๋ ‰์…˜์˜ ๊ฒฝ์šฐ..

ETC 2021. 3. 25. 12:47
[JPA] ๊ฐ’ ํƒ€์ž…

์—”ํ‹ฐํ‹ฐ ํƒ€์ž…(Entity Type)๊ณผ ๊ฐ’ ํƒ€์ž…(Value Type)์˜ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์—”ํ‹ฐํ‹ฐ ํƒ€์ž…์˜ ํŠน์ง• ์‹๋ณ„์ž(@Id)๊ฐ€ ์žˆ๋‹ค. ์—”ํ‹ฐํ‹ฐ ํƒ€์ž…์€ ์‹๋ณ„์ž๊ฐ€ ์žˆ๊ณ  ์‹๋ณ„์ž๋กœ ๊ตฌ๋ถ„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒ๋ช… ์ฃผ๊ธฐ๊ฐ€ ์žˆ๋‹ค. ์ƒ์„ฑํ•˜๊ณ , ์˜์†ํ™” ํ•˜๊ณ , ์†Œ๋ฉธํ•˜๋Š” ์ƒ๋ช… ์ฃผ๊ธฐ๊ฐ€ ์žˆ๋‹ค. em.persist(entity)๋กœ ์˜์†ํ™” ํ•œ๋‹ค. em.remove(entity)๋กœ ์ œ๊ฑฐํ•œ๋‹ค. ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฐธ์กฐ ๊ฐ’์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์„ ๊ณต์œ  ์ฐธ์กฐ๋ผ ํ•œ๋‹ค. ๊ฐ’ ํƒ€์ž…์˜ ํŠน์ง• ์‹๋ณ„์ž๊ฐ€ ์—†๋‹ค. ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ์—”ํ‹ฐํ‹ฐ์— ์˜์กดํ•œ๋‹ค. ์Šค์Šค๋กœ ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๊ณ  ์—”ํ‹ฐํ‹ฐ์— ์˜์กดํ•œ๋‹ค. ์˜์กดํ•˜๋Š” ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ๊ฐ™์ด ์ œ๊ฑฐ๋œ๋‹ค. ๊ณต์œ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค. ์—”ํ‹ฐํ‹ฐ ํƒ€์ž…๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ณต์œ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค. ๋Œ€์‹  ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค...

Programming/JPA 2020. 11. 26. 16:23
[JPA] ํ”„๋ก์‹œ์™€ ์—ฐ๊ด€๊ด€๊ณ„ ์ •๋ฆฌ

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

Programming/JPA 2020. 11. 26. 14:28
[JPA] ์—”ํ‹ฐํ‹ฐ ๋งคํ•‘

4.1 @Entity JPA๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘ํ•  ํด๋ž˜์Šค๋Š” @Entity ์–ด๋…ธํ…Œ์ด์…˜์„ ํ•„์ˆ˜๋กœ ๋ถ™์—ฌ์•ผ ํ•œ๋‹ค. @Entity๊ฐ€ ๋ถ™์€ ํด๋ž˜์Šค๋Š” JPA๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์—”ํ‹ฐํ‹ฐ๋ผ ๋ถ€๋ฅธ๋‹ค. (name ์†์„ฑ ์ •์˜ํ•˜์ง€ ์•Š์„ ์‹œ ํด๋ž˜์Šค ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ๋จ) @Entity ์ ์šฉ ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋Š” ํ•„์ˆ˜ (ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—†๋Š” public ๋˜๋Š” protected ์ƒ์„ฑ์ž) final ํด๋ž˜์Šค, enum, interface, inner ํด๋ž˜์Šค์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ €์žฅํ•  ํ•„๋“œ์— final์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค. JPA๊ฐ€ ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ด ์ƒ์„ฑ์ž๋Š” ๋ฐ˜๋“œ์‹œ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ž๋ฐ”๋Š” ์ƒ์„ฑ์ž๊ฐ€ ํ•˜๋‚˜๋„ ์—†์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ž๋™์œผ๋กœ ๋งŒ๋“ ๋‹ค. public Member(..

Programming/JPA 2020. 11. 24. 15:53
[JPA] ์˜์†์„ฑ ๊ด€๋ฆฌ

3.1 ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ์™€ ์—”ํ‹ฐํ‹ฐ ๋ฉ”๋‹ˆ์ € ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ : ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋ฅผ ๋งŒ๋“œ๋Š” ๊ณต์žฅ. ๊ณต์žฅ์„ ๋งŒ๋“œ๋Š” ๋น„์šฉ์ด ์ƒ๋‹นํžˆ ํฌ๊ธฐ์— ํ•œ๊ฐœ๋งŒ ๋งŒ๋“ค์–ด์„œ ์• ํ”Œ๋ฆฌ ์ผ€์ด์…˜ ์ „์ฒด์— ๊ณต์œ ํ•˜๋„๋ก ์„ค๊ณ„๋จ. ๋ฐ˜๋ฉด์— ๊ณต์žฅ์—์„œ ์•คํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋น„์šฉ์€ ๊ฑฐ์˜ ๋“ค์ง€ ์•Š์Œ ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•ด๋„ ์•ˆ์ „ํ•˜๋ฏ€๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ ๊ฐ„์— ๊ณต์œ ํ•ด๋„ ๋˜์ง€๋งŒ, ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ฉด ๋™์‹œ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์Šค๋ ˆ๋“œ ๊ฐ„์— ์ ˆ๋Œ€ ๊ณต์œ ํ•˜๋ฉด ์•ˆ๋œ๋‹ค. EntityManagerFactory์—์„œ ๋‹ค์ˆ˜์˜ ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋ฅผ ์ƒ์„ฑ ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋Š” ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์ด ๊ผญ ํ•„์š”ํ•œ ์‹œ์  ๊นŒ์ง€ ์ปค๋„ฅ์…˜์„ ์–ป์ง€ ์•Š๋Š”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•  ๋•Œ ์ปค๋„ฅ์…˜์„ ํš๋“ํ•œ๋‹ค. EntityManager2๋Š” ์ปค๋„ฅ์…˜์„ ..

Programming/JPA 2020. 11. 24. 10:28
[JPA] JPA๋ž€

1.1 SQL์„ ์ง์ ‘ ๋‹ค๋ฃฐ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์  ์ž๋ฐ”๋กœ ์ž‘์„ฑํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ JDBC API๋ฅผ ์ด์šฉํ•ด์„œ SQL์„ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ „๋‹ฌํ•œ๋‹ค. ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋Š” ๊ฐ์ฒด๊ตฌ์กฐ์™€๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ์ฒด ์ง€ํ–ฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ค‘๊ฐ„์—์„œ SQL๊ณผ JDBC API๋ฅผ ์ด์šฉํ•ด์„œ ๋ณ€ํ™˜ ์ž‘์—…์„ ์ง์ ‘ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๋ฌธ์ œ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— CRUDํ•˜๋ ค๋ฉด ๋„ˆ๋ฌด ๋งŽ์€ SQL๊ณผ JDBC API ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ…Œ์ด๋ธ” ๋งˆ๋‹ค ์ด๋Ÿฐ ๋น„์Šทํ•œ ์ผ์„ ๋ฐ˜๋ณตํ•ด์•ผ ํ•œ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ SQL์„ ์ง์ ‘ ๋‹ค๋ฃฐ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ ์„ ์š”์•ฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ง„์ •ํ•œ ์˜๋ฏธ์˜ ๊ณ„์ธต ๋ถ„ํ• ์ด ์–ด๋ ต๋‹ค. ์—”ํ‹ฐํ‹ฐ๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋‹ค. SQL์— ์˜์กด์ ์ธ ๊ฐœ๋ฐœ์„ ํ”ผํ•˜๊ธฐ ์–ด๋ ต๋‹ค. JPA์™€ ๋ฌธ์ œ ํ•ด๊ฒฐ JPA๋ฅผ ์ด์šฉํ•˜..

Programming/JPA 2020. 11. 24. 10:27
[Java] ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ , JVM(Java Virtual Machine)์ด๋ž€

JVM์ด๋ž€? ์ž๋ฐ” ๊ฐ€์ƒ๋จธ์‹  ๊ฐ€์ƒ๋จธ์‹ ์ด๋ž€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์œ ์‚ฌํ•œ ๋จธ์‹ ์„ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ตฌํ˜„ํ•œ ๊ฒƒ Java์™€ OS์‚ฌ์ด์—์„œ ์ค‘๊ฐœ์ž ์—ญํ• ์„ ํ•˜๋ฉฐ Java๊ฐ€ OS์— ๊ตฌํ•ด๋ฐ›์ง€ ์•Š๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•จ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, Garbage Collection์ˆ˜ํ–‰ ์Šคํƒ๊ธฐ๋ฐ˜์˜ ๊ฐ€์ƒ๋จธ์‹  ํด๋ž˜์Šค๋กœ๋”๋ฅผ ํ†ตํ•ด ์ฝ์–ด ๋“ค์—ฌ ์ž๋ฐ”API์™€ ํ•จ๊ป˜ ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด JVM์€ OS๋กœ ๋ถ€ํ„ฐ ์ด ํ”„๋กœ๊ทธ๋žจ์ด ํ•„์š”๋กœ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น (JVM์€ ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์šฉ๋„์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌ ํ•จ) ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ(javac)๊ฐ€ ์ž๋ฐ” ์†Œ์Šค์ฝ”๋“œ(.java)๋ฅผ ์ฝ์–ด๋“ค์—ฌ ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ(.class)๋กœ ๋ณ€ํ™˜ (.java -> .class) Class Loader๋ฅผ ํ†ตํ•ด classํŒŒ์ผ์„์„ JVM์œผ๋กœ ๋กœ๋”ฉ ๋กœ๋”ฉ๋œ classํŒŒ์ผ๋“ค์€ Ex..

Language/Java 2020. 5. 13. 12:04
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2024/04   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ