JPA์—์„œ ๋ณ€๊ฒฝ ๊ฐ์ง€์™€ ๋ณ‘ํ•ฉ(Merge) ์ดํ•ดํ•˜๊ธฐ
ยท
๐ŸŒฟ Framework/Spring
1. ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์™€ ์ค€์˜์† ์—”ํ‹ฐํ‹ฐ๋ž€?์˜์†์„ฑ ์ปจํ…์ŠคํŠธ(Persistence Context)JPA์—์„œ๋Š” ์—”ํ‹ฐํ‹ฐ(Entity)๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ™˜๊ฒฝ์„ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ(Persistence Context)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋Š” ์—”ํ‹ฐํ‹ฐ์˜ ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ๋™๊ธฐํ™”๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.์ค€์˜์† ์—”ํ‹ฐํ‹ฐ(Detached Entity)์ค€์˜์† ์—”ํ‹ฐํ‹ฐ(Detached Entity)๋ž€, ํ•œ ๋ฒˆ ์˜์† ์ƒํƒœ(Persistent State)์˜€๋‹ค๊ฐ€ ํ˜„์žฌ๋Š” ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์—์„œ ๊ด€๋ฆฌ๋˜์ง€ ์•Š๋Š” ์—”ํ‹ฐํ‹ฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์กฐํšŒ๋œ Book ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ํŠธ๋žœ์žญ์…˜์ด ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์—์„œ ๋ถ„๋ฆฌ๋˜๋ฉด ํ•ด๋‹น ๊ฐ์ฒด๋Š” ์ค€์˜์† ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ์ฒด๋ฅผ ๋‹ค์‹œ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ..
JPA๋ž€? ๊ฐœ๋…, ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ, JPQL๊นŒ์ง€ ํ•œ๋ฒˆ์— ์ •๋ฆฌ
ยท
๐ŸŒฟ Framework/Spring
JPA(Java Persistence API)๋Š” ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ORM(Object-Relational Mapping) ๊ธฐ์ˆ ์ด๋‹ค. ์ฆ‰, SQL์„ ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.โœ… JPA์˜ ์ฃผ์š” ๊ฐœ๋…1. ORM(Object-Relational Mapping)JPA๋Š” ORM ๊ธฐ์ˆ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ๊ฐ์ฒด์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์„ ๋งคํ•‘ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด SQL์„ ์ง์ ‘ ๋‹ค๋ฃจ์ง€ ์•Š์•„๋„ ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.2. ์—”ํ‹ฐํ‹ฐ(Entity)JPA์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘๋˜๋Š” ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ "์—”ํ‹ฐํ‹ฐ"๋ผ๊ณ  ํ•œ๋‹ค. ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค๋Š” @Entity ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•œ..
Thymeleaf ํ…œํ”Œ๋ฆฟ ์—”์ง„
ยท
๐ŸŒฟ Framework/Spring
Thymeleaf๋Š” ์ž๋ฐ” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ทฐ(ํ™”๋ฉด)๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ ์—”์ง„์ด๋‹ค. Thymeleaf๋Š” HTML, XML, JavaScript, CSS ๋“ฑ์˜ ๋งˆํฌ์—… ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ์ˆœ์ˆ˜ํ•œ HTML์„ ์ตœ๋Œ€ํ•œ ์œ ์ง€ํ•˜๋ ค๋Š” ๋„ค์ธ„๋Ÿด ํ…œํ”Œ๋ฆฟ(Natural Templates) ๊ธฐ๋ฐ˜์˜ ํ…œํ”Œ๋ฆฟ ์—”์ง„์ด๋‹ค. Thymeleaf๋Š” ์„œ๋ฒ„ ์ธก์—์„œ HTML ๋ฌธ์„œ๋กœ ๋ Œ๋”๋ง ๋˜์–ด ์ „๋‹ฌ๋˜๋ฏ€๋กœํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์ถ”๊ฐ€์ ์ธ ์ฒ˜๋ฆฌ์—†์ด HTML ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ์Šคํ”„๋ง๊ณผ ์ž์—ฐ์Šค๋Ÿฐ ํ†ตํ•ฉ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Spring MVC ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ JSP๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ ์Šคํ”„๋ง์ด ์ง€์›ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.  ThymeleafIntegrations galore Eclipse, IntelliJ IDEA, Spri..
[Spring]๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์™€ ์Šคํ”„๋ง
ยท
๐ŸŒฟ Framework/Spring
์Šคํ”„๋ง์˜ ์—ญ์‚ฌ ์Šคํ”„๋ง์˜ ์—ญ์‚ฌ - ์ „์„ค์˜ ์‹œ์ž‘ · 2002๋…„ ๋กœ๋“œ ์กด์Šจ ์ฑ… ์ถœ๊ฐ„ · EJB์˜ ๋ฌธ์ œ์  ์ง€์  · EJB ์—†์ด๋„ ์ถฉ๋ถ„ํžˆ ๊ณ ํ’ˆ์งˆ์˜ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ์คŒ. · 30,000๋ผ์ธ ์ด์ƒ์˜ ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ์„ ์˜ˆ์ œ ์ฝ”๋“œ๋กœ ์„ ๋ณด์ž„ · ์—ฌ๊ธฐ์— ์ง€๊ธˆ์˜ ์Šคํ”„๋ง ํ•ต์‹ฌ ๊ฐœ๋…๊ณผ ๊ธฐ๋ฐ˜ ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ์Œ · BeanFactory, ApplicationContext, POJO, ์ œ์–ด์˜ ์—ญ์ „, ์˜์กด๊ด€๊ณ„ ์ฃผ์ž… · ์ฑ…์ด ์œ ๋ช…ํ•ด์ง€๊ณ , ๊ฐœ๋ฐœ์ž๋“ค์ด ์ฑ…์˜ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉ · ์ฑ… ์ถœ๊ฐ„ ์งํ›„ Juergen Hoeller(์œ ๊ฒ ํœ ๋Ÿฌ), Yann Caroff(์–€ ์นด๋กœํ”„)๊ฐ€ ๋กœ๋“œ ์กด์Šจ์—๊ฒŒ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ์•ˆ · ์Šคํ”„๋ง์˜ ํ•ต์‹ฌ ์ฝ”๋“œ์˜ ์ƒ๋‹น์ˆ˜๋Š” ์œ ๊ฒ ํœ ๋Ÿฌ๊ฐ€ ์ง€๊ธˆ๋„ ๊ฐœ๋ฐœ · ์Šคํ”„๋ง ์ด๋ฆ„์€ ์ „ํ†ต์ ์ธ J2EE(..
[Spring]ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ์„ค์ •
ยท
๐ŸŒฟ Framework/Spring
ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ Spring์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Java๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, Java๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ธํ”„๋Ÿฐ์˜ Spring์ž…๋ฌธ๊ฐ•์˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Java 11 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— 11 ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค. IDE(ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ)๋Š” IntelliJ ๋˜๋Š” Eclipse๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค. ์˜›๋‚  ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” Springํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ๋งŒ๋“ค์—ˆ๋˜ ๋ฐ˜๋ฉด์—, ์š”์ฆ˜์—๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ์‰ฝ๊ฒŒ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. * ์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•ด์„œ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ * https://start.spring.io ์œ„ ์‚ฌ์ง„์€ ์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ ์‚ฌ์ดํŠธ์˜ ํŽ˜์ด์ง€ ์‚ฌ์ง„์ด๋‹ค. ์ œ์ผ ์ฒ˜์Œ์— Project์•ˆ์˜ Maven..
Kyle99
'๐ŸŒฟ Framework/Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก