์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

๊ณ ์„ฑ๋Šฅ JPA & Hibernate (High-Performance Java Persistence)

์—ฌ๋Ÿฌ๋ถ„์˜ ์ž๋ฐ” ์˜์†์„ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ž˜ ๋งŒ๋“ค์–ด์ง„ ๊ณ ์„ฑ๋Šฅ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ธ๊ฐ€์š”, ์•„๋‹ˆ๋ฉด ๊ฒจ์šฐ ๊ตด๋Ÿฌ๋งŒ ๊ฐ€๋Š” ๋А๋ฆฐ ์ฝ”๋“œ์ธ๊ฐ€์š”? ์ด ๋‘˜์€ ์ •๋ง ํ•œ ๋ ์ฐจ์ด์ž…๋‹ˆ๋‹ค. JPA, Hibernate์— ๋Œ€ํ•ด ์ œ๋Œ€๋กœ ๊ณต๋ถ€ํ•˜๊ณ  ๊ณ ์„ฑ๋Šฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด๋ด…์‹œ๋‹ค!

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • ์‹ค๋ฌด ํ™˜๊ฒฝ์˜ JDBC, JPA, Hibernate ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

  • JPA์™€ Hibernate์˜ ๋‚ด๋ถ€๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์„ฑ๋Šฅ ์ €ํ•˜์˜ ๊ทผ๋ณธ ์›์ธ์„ ์ •ํ™•ํžˆ ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

  • ๋‹จ์ˆœํžˆ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ˆ˜์ค€์„ ๋„˜์–ด์„œ, ์ฟผ๋ฆฌ ์‹คํ–‰ ํ๋ฆ„๊ณผ ์ƒํƒœ ๋ณ€ํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์„ค๊ณ„ ๋Šฅ๋ ฅ์„ ํ‚ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Vlad๋‹˜-๋ ๋ฐฐ๋„ˆ(์ˆ˜์ •)

๊ธ€๋กœ๋ฒŒ ์ „๋ฌธ๊ฐ€์—๊ฒŒ ๋ฐฐ์šฐ๋Š”
๊ณ ์„ฑ๋Šฅ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „๋žต

์ง€๊ธˆ ์“ฐ๊ณ  ์žˆ๋Š” JPA, ์ •๋ง ์ œ๋Œ€๋กœ ์“ฐ๊ณ  ๊ณ„์‹ ๊ฐ€์š”?

์„ฑ๋Šฅ ๋ณ‘๋ชฉ์€ ๋Œ€๋ถ€๋ถ„ ์šฐ๋ฆฌ๊ฐ€ '์ž˜ ์•ˆ๋‹ค๊ณ  ๋ฏฟ๋Š” ๊ฒƒ'์—์„œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

"Hibernate ๋‚ด๋ถ€๋ฅผ ์ดํ•ดํ•˜๋Š” ์ˆœ๊ฐ„, ์‹ค๋ฌด ์„ค๊ณ„๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค."

Hibernate๋กœ ์ดํ•ดํ•˜๋Š” ์„ฑ๋Šฅ ์„ค๊ณ„์˜ ๊ทผ๋ณธ

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

JPA ๋‚ด๋ถ€์—์„œ๋Š” ์‹ค์ œ๋กœ ์–ด๋–ค ์ผ์ด ๋ฒŒ์–ด์ง€๊ณ  ์žˆ์„๊นŒ์š”? ์ฆ‰, ์ปค๋„ฅ์…˜์€ ์–ธ์ œ ์—ด๋ฆฌ๊ณ , ์ฟผ๋ฆฌ๋Š” ์–ด๋–ค ํƒ€์ด๋ฐ์— ์‹คํ–‰๋˜๋ฉฐ, ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๋‚˜ ์บ์‹ฑ, ๋ฝํ‚น์€ ์–ด๋–ป๊ฒŒ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„๊นŒ์š”? Hibernate์˜ ๋™์ž‘ ํ๋ฆ„์„ ์ดํ•ดํ•˜๋ฉด, ์ด๋Ÿฌํ•œ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜๋งŽ์€ Java ์ „๋ฌธ๊ฐ€๋“ค์ด ์ถ”์ฒœํ•˜๋Š”
ํผํฌ๋จผ์Šค ์ตœ์ ํ™” ๋ฐ”์ด๋ธ”

์ „ ์„ธ๊ณ„ ์ž๋ฐ” ์ฑ”ํ”ผ์–ธ๋“ค์˜ ์ฐฌ์‚ฌ
์•„๋งˆ์กด ํ‰์  4.7
โญ๏ธ ๋ฒ ์ŠคํŠธ์…€๋Ÿฌ ์ €์ž ์ง๊ฐ•!

Rafael Winterhalter
(Byte Buddy ์ฐฝ์‹œ์ž
Java ์ฑ”ํ”ผ์–ธ)

Lukas Eder
(JOOQ ์ฐฝ๋ฆฝ์ž
Java ์ฑ”ํ”ผ์–ธ)

Markus Eisele
(Red Hat ๊ธฐ์ˆ  ์ „๋„์‚ฌ
Java ์ฑ”ํ”ผ์–ธ)

JDBC๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋“  JPA๋‚˜ Hibernate๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์šฉํ•˜๋“ , ๊ทธ ์„ฑ๋Šฅ ์˜ํ–ฅ์„ ์ด๋ณด๋‹ค ๋” ์ž˜ ์ •๋ฆฌํ•œ ์ž๋ฃŒ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์ด ์ฑ…์€ JAVA ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ์„ ๊ทนํ•œ๊นŒ์ง€ ๋Œ์–ด์˜ฌ๋ฆฌ๊ณ ์ž ํ•˜๋Š” ๋ชจ๋“  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ•„๋…์„œ์ž…๋‹ˆ๋‹ค.

Vlad๋Š” ์ž์‹ ์˜ ์—„์ฒญ๋‚œ ๊ฒฝํ—˜์„ ์ฝ๊ธฐ ์‰ฌ์šด ์ฑ…์œผ๋กœ ๋‹ด์•„๋ƒˆ๊ณ , JPA๋‚˜ Hibernate๋ฅผ ๋‹ค๋ฃฌ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ์ฝ์–ด์•ผ ํ•  ์ฑ…์ž…๋‹ˆ๋‹ค.

"๊ณ ์„ฑ๋Šฅ JPA&Hibernate" ๊ฐ•์˜๋Š”

์„ฑ๋Šฅ ์ด์Šˆ์— ํŠนํ™”๋œ ๋ณด๊ธฐ ๋“œ๋ฌธ JPA ์ตœ์ ํ™” ๊ฐ•์˜

๋Œ€๋ถ€๋ถ„์˜ JPA ๊ฐ•์˜๋Š” ์—”ํ‹ฐํ‹ฐ ์„ค๊ณ„๋‚˜ API ์ž‘์„ฑ์— ์ดˆ์ ์„ ๋งž์ถฅ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ฐ•์˜๋Š” ์‹ค๋ฌด์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ƒ์น˜ ๋ชปํ•œ Lazy ๋กœ๋”ฉ ์˜ˆ์™ธ, ์ฟผ๋ฆฌ ํญ์ฆ, ์บ์‹œ ๋ฌดํšจํ™” ๋“ฑ ๋ณตํ•ฉ์ ์ธ ์ด์Šˆ๋ฅผ Hibernate ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ์›์ธ๋ถ€ํ„ฐ ์ง„๋‹จํ•˜๋ฉฐ, Flush, ์ปค๋„ฅ์…˜ ํ’€, Statement ์ƒ์„ฑ ํ๋ฆ„ ๋“ฑ ํ•ต์‹ฌ ์š”์†Œ๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•œ ์„ค๊ณ„ ๊ธฐ์ค€์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์‹ค๋ฌด ์„ค๊ณ„๋ฅผ ๋ฐ”๊พธ๋Š” Hibernate ์‚ฌ๊ณ ๋ฒ•

Hibernate๋Š” ์šฐ๋ฆฌ๊ฐ€ ์˜๋„ํ•˜์ง€ ์•Š์€ ์‹œ์ ์— ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜, ์—ฐ๊ด€๊ด€๊ณ„ ์„ค์ • ํ•˜๋‚˜๋งŒ์œผ๋กœ ์ˆ˜์‹ญ ๊ฐœ์˜ ์ฟผ๋ฆฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋Š” Dirty Checking, ์‹คํ–‰ ์‹œ์ , ์—ฐ๊ด€๊ด€๊ณ„ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ ๋“ฑ ์ฟผ๋ฆฌ ๋ฐœ์ƒ์˜ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ๋˜๋Š” ๋‚ด๋ถ€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌ์กฐ์ ์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ˆ˜๊ฐ•์ƒ์€ ์‹คํ–‰ ํ๋ฆ„์„ ์˜ˆ์ธกํ•˜๊ณ , ๋ณ€ํ™”ํ•˜๋Š” ์กฐ๊ฑด ์†์—์„œ๋„ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์„ค๊ณ„ ํŒ๋‹จ ๊ธฐ์ค€์„ ๊ฐ–์ถ”๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Hibernate ์‹คํ–‰ ํ๋ฆ„์„ โ€˜์‹œ๊ฐ์ ์œผ๋กœโ€™ ์ดํ•ด

Hibernate์˜ ๋‚ด๋ถ€ ๋™์ž‘์€ ์ฝ”๋“œ๋งŒ์œผ๋กœ ํŒŒ์•…ํ•˜๊ธฐ์—” ๋ณต์žกํ•˜๊ณ  ์ถ”์ƒ์ ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋Š” ์ปค๋„ฅ์…˜ ์ƒ์„ฑ๋ถ€ํ„ฐ ์‹คํ–‰ ๊ณ„ํš, ์บ์‹œ ์ ์šฉ, ๋ฝํ‚น ์ฒ˜๋ฆฌ๊นŒ์ง€์˜ ํ๋ฆ„์„ ๋‹จ๊ณ„๋ณ„ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ํ™œ์šฉํ•ด ์‹œ๊ฐ์ ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์‹คํ–‰ ๊ตฌ์กฐ๋ฅผ ์‹คํ–‰ ์ˆœ์„œ์™€ ์กฐ๊ฑด ํ๋ฆ„์— ๋”ฐ๋ผ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๊ฐ•์˜๋ฅผ ํ†ตํ•ด Hibernate์˜ ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ํ•œ๋ˆˆ์— ๊ฟฐ๋šซ๋Š” ์„ค๊ณ„ ๊ฐ๊ฐ์„ ๊ธฐ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•™์Šต ๋‚ด์šฉ

์ด ๊ฐ•์˜๋Š” Hibernate ๋‚ด๋ถ€ ๋™์ž‘์„ ํŒŒ์•…ํ•˜๊ณ , ์ฟผ๋ฆฌ ์‹คํ–‰ ํ๋ฆ„๊ณผ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ๋ฐฉ์‹๊นŒ์ง€ ์ดํ•ดํ•จ์œผ๋กœ์จ JPA๋ฅผ ๋ณด๋‹ค ์ •๊ตํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ปค๋„ฅ์…˜ ์ƒ๋ช…์ฃผ๊ธฐ์™€ ํ’€ ์ œ์–ด ์ „๋žต

์š”์ฒญ๋งˆ๋‹ค ์ปค๋„ฅ์…˜์ด ์–ธ์ œ ์ƒ์„ฑ๋˜๊ณ  ๋‹ซํžˆ๋Š”์ง€, ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•  ๋•Œ ๋ฆฌ์†Œ์Šค ๋ณ‘๋ชฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ•์˜์—์„œ๋Š” Hibernate๊ฐ€ ์ปค๋„ฅ์…˜ ํ’€๊ณผ ์–ด๋–ป๊ฒŒ ์—ฐ๋™๋˜๋Š”์ง€, ์ปค๋„ฅ์…˜ ํ”„๋กœ๋ฐ”์ด๋”์™€ ํ†ต๊ณ„ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด ๋ฆฌ์†Œ์Šค ํ๋ฆ„๊ณผ ๋ณ‘๋ชฉ ๊ตฌ๊ฐ„์„ ์ถ”์ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค

์‹๋ณ„์ž ์ „๋žต๊ณผ ์ตœ์ ํ™”

์‹๋ณ„์ž ์ƒ์„ฑ ๋ฐฉ์‹์€ ์‹œ์Šคํ…œ์˜ ํ™•์žฅ์„ฑ๊ณผ ์ดˆ๊ธฐ ์„ฑ๋Šฅ์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค. Hibernate์˜ ์˜ตํ‹ฐ๋งˆ์ด์ € ์ „๋žต๊ณผ ํ•จ๊ป˜ ์—ฐ๊ด€๊ด€๊ณ„ ๋ฐ ์ƒ์† ์„ค๊ณ„๊ฐ€ ์ฟผ๋ฆฌ ์–‘๊ณผ ๋ณต์žก๋„์— ์–ด๋–ค ์˜ํ–ฅ์„ ์ฃผ๋Š”์ง€๋ฅผ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ž˜๋ชป๋œ ์„ค๊ณ„๋กœ ์ธํ•œ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ์„ ๊ตฌ์กฐ์ ์œผ๋กœ ์˜ˆ๋ฐฉํ•˜๋Š” ๊ธฐ์ค€์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ์‹คํ–‰ ํƒ€์ด๋ฐ ์ œ์–ด

Hibernate์˜ Flush ์‹œ์ ์€ ์˜ˆ์ƒ๋ณด๋‹ค ๋‹ค์–‘ํ•œ ์กฐ๊ฑด์—์„œ ๋ฐœ์ƒํ•˜๋ฉฐ, ๋ถˆํ•„์š”ํ•œ ์ฟผ๋ฆฌ ๋ฐœ์ƒ์˜ ์›์ธ์ด ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์˜์—์„œ๋Š” ์•ก์…˜ ํ, Dirty Checking, ๋ฐ”์ดํŠธ์ฝ”๋“œ ํ–ฅ์ƒ ๊ธฐ๋Šฅ ๋“ฑ ๋‚ด๋ถ€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ์ฟผ๋ฆฌ ์‹คํ–‰ ํƒ€์ด๋ฐ์„ ์ •ํ™•ํžˆ ์ œ์–ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํž™๋‹ˆ๋‹ค.

Statement ์‹คํ–‰ ํ๋ฆ„๊ณผ ์ฟผ๋ฆฌ ์ตœ์ ํ™”

Statement๊ฐ€ ๋งค ์š”์ฒญ๋งˆ๋‹ค ์ƒˆ๋กœ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ์‹คํ–‰ ๊ณ„ํš์ด ์žฌํ™œ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด, DB ๋ถ€ํ•˜๊ฐ€ ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Hibernate์˜ Statement ์ƒ์„ฑ ๋ฐ ์บ์‹ฑ ํ๋ฆ„, ์‹คํ–‰ ๊ณ„ํš ์ตœ์ ํ™” ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•˜๋ฉฐ, ์ฟผ๋ฆฌ ์‹คํ–‰ ํšจ์œจ์„ ๋†’์ด๋Š” ์ „๋žต์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๋Ÿ‰ ์ฒ˜๋ฆฌ์™€ ์กฐํšŒ ์„ฑ๋Šฅ์„ ์ขŒ์šฐํ•˜๋Š” ์ „๋žต๋“ค

Hibernate๋Š” ๋Œ€๋Ÿ‰ ์ฒ˜๋ฆฌ๋‚˜ ์—ฐ๊ด€ ์—”ํ‹ฐํ‹ฐ ์กฐํšŒ์—์„œ ์ „๋žต์— ๋”ฐ๋ผ ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ํฌ๊ฒŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. Batching, Fetching, DTO ํ”„๋กœ์ ์…˜, ์บ์‹œ ๊ณ„์ธต ๊ตฌ์กฐ ๋“ฑ์„ ์‹ค๋ฌด ํ๋ฆ„์— ๋งž์ถฐ ํ•™์Šตํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์–‘์ด ๋งŽ์•„๋„ ์ฟผ๋ฆฌ ์ˆ˜์™€ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ œ์–ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํž™๋‹ˆ๋‹ค.

๋™์‹œ์„ฑ ์ œ์–ด๋ฅผ ์œ„ํ•œ ํŠธ๋žœ์žญ์…˜๊ณผ ๋ฝํ‚น ์ „๋žต

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๋™์‹œ์„ฑ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ํŠธ๋žœ์žญ์…˜์ด๋‚˜ ๋ฝ์„ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์ด ๋ฌด๋„ˆ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Hibernate์˜ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ๊ตฌ์กฐ, ๋น„๊ด€์ /๋‚™๊ด€์  ๋ฝํ‚น ์ „๋žต์„ ํ•™์Šตํ•˜๊ณ , ์‹ค๋ฌด์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŒ๋‹จ ๊ธฐ์ค€์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ•™์Šต์ž๋ฃŒ

  • 46๊ฐœ, ๊ทธ๋ฆฌ๊ณ  1025 ํŽ˜์ด์ง€์˜ PDF ๋ฐœํ‘œ ์ž๋ฃŒ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

  • ๋ชจ๋“  ์†Œ์Šค ์ฝ”๋“œ๋Š” GitHub ์ €์žฅ์†Œ์— ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ˆ˜๊ฐ•ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ง์ ‘ ์„ค์ •ํ•˜๊ฒŒ ๋˜๊ณ  ์ดํ›„์— JPA ๋˜๋Š” Hibernate ํ•™์Šต ํ™˜๊ฒฝ์œผ๋กœ ํ™œ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • JPA, Hibernate ๋“ฑ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ํ•ด๋‹น ๊ธฐ์ˆ ์„ ๋” ์ž˜ ํ™œ์šฉํ•˜๊ณ  ์‹ถ์€ ๋ถ„

  • JPA, Hibernate ๋“ฑ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๊ทผ๋ณธ์ ์ธ ์ดํ•ด๋ฅผ ๋†’์ด๊ณ  ์‹ถ์œผ์‹  ๋ถ„

  • ์‹ค๋ฌด ํ™˜๊ฒฝ์˜ Java Data Access ๊ณ„์ธต์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ  ์‹ถ์œผ์‹  ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • JAVA ์–ธ์–ด

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ์ดˆ ์ง€์‹

  • JPA

์•ˆ๋…•ํ•˜์„ธ์š”
Vlad Mihalcea์ž…๋‹ˆ๋‹ค.

1,080

๋ช…

์ˆ˜๊ฐ•์ƒ

43

๊ฐœ

์ˆ˜๊ฐ•ํ‰

4.4

์ 

๊ฐ•์˜ ํ‰์ 

2

๊ฐœ

๊ฐ•์˜

My name is Vlad Mihalcea, and Iโ€™m a Java Champion. I wrote the High-Performance Java Persistence book, which became one of the best-selling Java books on Amazon.

 

I'm currently developing the amazing Hypersistence Optimizer, and in my free time, I develop various open-source projects (e.g., Hypersistence Utils and FlexyPool) and answer questions on StackOverflow.

 

์ €๋Š” Java ์ฑ”ํ”ผ์–ธ์ด์ž Hibernate ORM ํ”„๋กœ์ ํŠธ์˜ ์ฃผ์š” ๊ธฐ์—ฌ์ž์ž…๋‹ˆ๋‹ค. Hypersistence Optimizer ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋ฉฐ, ์ด ๋„๊ตฌ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ๊ณผ ๋งคํ•‘์„ ์Šค์บ”ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ณ„์ธต ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ์— ํ•„์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์•Œ๋ ค์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

StackOverflow์—์„œ Hibernate, Java, JPA ํƒœ๊ทธ์— ๊ด€๋ จ๋œ ์ˆ˜์ฒœ ๊ฐœ์˜ ์งˆ๋ฌธ์— ๋‹ต๋ณ€ํ•˜๋ฉฐ ๊ณจ๋“œ ๋ฐฐ์ง€๋ฅผ ํš๋“ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ๊ฐœ์ธ ๋ธ”๋กœ๊ทธ์— ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Š” ์˜คํ”ˆ ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹ ๋ขฐํ•˜๋ฉฐ, ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ์ฐธ์—ฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ ์ ˆํ•œ ๋„๊ตฌ๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด Hypersistence Utils๋‚˜ FlexyPool๊ณผ ๊ฐ™์€ ์ƒˆ๋กœ์šด ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

50๊ฐœ โˆ™ (10์‹œ๊ฐ„ 42๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

28๊ฐœ

4.2

28๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • hahahl๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    hahahl

    ์ˆ˜๊ฐ•ํ‰ 43

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    10% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    SQL์—์„œ ์ด์–ด์„œ JPA๊ฐ•์˜๋„ ์ˆ˜๊ฐ•ํ•˜๋Š”๋ฐ ์—ญ์‹œ ์˜์‹ฌํ•  ํ•„์š”๋„ ์—†๋Š” ๊ฐ•์˜ ํ€„์ด๋„ค์š”!

    • Vlad Mihalcea
      ์ง€์‹๊ณต์œ ์ž

      Thanks for appreciating my courses.

  • ์žฅ์šฐ์ •๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ์žฅ์šฐ์ •

    ์ˆ˜๊ฐ•ํ‰ 6

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    98% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ์ž˜ ์ •๋ˆ๋œ ๊ฐ•์˜. JPA์™€ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์˜ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ์ผ๋ชฉ์š”์—ฐํ•˜๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์„ฑ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š”์ง€, ๊ทธ์— ๋”ฐ๋ผ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š”๊ฒŒ ๋‚˜์€์ง€ ์ž˜ ์ •๋ฆฌํ•ด์ค๋‹ˆ๋‹ค. ์ค‘๊ตฌ๋‚œ๋ฐฉ์œผ๋กœ ํฉ์–ด์ ธ์žˆ๋˜ ์ง€์‹์„ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•ด์„œ ๋ฌถ์–ด์ฃผ๋Š” ๋А๋‚Œ์ด์—ˆ์–ด์š”

    • Vlad Mihalcea
      ์ง€์‹๊ณต์œ ์ž

      I'm glad you liked the course structure.

  • ํ™”๋ฅผ์ฐธ์ž๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ํ™”๋ฅผ์ฐธ์ž

    ์ˆ˜๊ฐ•ํ‰ 6

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    6% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ๋ธ”๋ผ๋“œ๋‹˜ ๊ฐ•์˜๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฑด๋„ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ, ์˜์–ด๊ฐ€ ์•ˆ๋ผ์„œ ๋ง์„ค์ด๋‹ค ๋ง์•˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ธ”๋ผ๋“œ๋‹˜์ด ์–ธ์ œ ํ•œ๊ตญ์–ด๋ฅผ ๋ฐฐ์šด๊ฑด์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ํ•œ๊ตญ์–ด๋กœ ์ง€์‹์„ ๊ณต์œ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค... ๋ฐ€๋„ ๋†’๊ฒŒ ์ž˜ ์งœ์—ฌ์ง„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€๋„ ์ž˜ ํ•™์Šตํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค

    • Vlad Mihalcea
      ์ง€์‹๊ณต์œ ์ž

      Thanks to Inflearn, the course is now available in Korean as well.

  • ๋ชจ๊น…๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ๋ชจ๊น…

    ์ˆ˜๊ฐ•ํ‰ 23

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    22% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ์ง„์งœ ๊นŠ๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ์‹ญ๋‹ˆ๋‹ค. ๋‚จ์€ ๊ฐ•์˜๋„ ์ž˜ ๋จน๊ฒ ์Šต๋‹ˆ๋‹ค!

    • Vlad Mihalcea
      ์ง€์‹๊ณต์œ ์ž

      I'm happy you found my explanations clear and thank you for taking this course.

  • asdf๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    asdf

    ์ˆ˜๊ฐ•ํ‰ 10

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    ์ˆ˜์ •๋จ

    5

    50% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ์ž์„ธํ•œ ๊ฐœ๋… ๊ทธ๋ฆฌ๊ณ  ์‹ค์Šต์„ ํ†ตํ•ด ์ตํž ์ˆ˜ ์žˆ์–ด ์ข‹์•˜์Šต๋‹ˆ๋‹ค! ํŠนํžˆ ๋‹ค์–‘ํ•œ DBMS์— ๋”ฐ๋ฅธ ์ฐจ์ด์ ๊ณผ ์ ์šฉ ๋ฐฉ๋ฒ•์„ ์ž˜ ์„ค๋ช…ํ•ด ์ฃผ์‹ญ๋‹ˆ๋‹ค.

    • Vlad Mihalcea
      ์ง€์‹๊ณต์œ ์ž

      ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์† ์ง€์ผœ๋ด ์ฃผ์„ธ์š”.

๋น„์Šทํ•œ ๊ฐ•์˜

๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

์—ฐ๊ด€ ๋กœ๋“œ๋งต

๊ฐ•์˜๊ฐ€ ํฌํ•จ๋œ ๋กœ๋“œ๋งต์œผ๋กœ ํ•™์Šตํ•ด ๋ณด์„ธ์š”!

์›” โ‚ฉ45,760

5๊ฐœ์›” ํ• ๋ถ€ ์‹œ

โ‚ฉ228,800