๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

๊ฐœ์ธ ๊ณต๋ถ€84

์Šคํ”„๋ง๋ถ€ํŠธ h2 database, h2 console ์„ค์ • โœ… ์Šคํ”„๋ง๋ถ€ํŠธ์—์„œ h2 database๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•pom.xml์— h2 ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ , application.properties์— ๊ด€๋ จ ์„ค์ •์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.   ๐Ÿ“Œ h2 database ์‹คํ–‰์„ ์œ„ํ•œ ์ตœ์†Œ ์„ค์ •pom.xml com.h2database h2 runtime application.properties# h2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋“œ (mem) ๋กœ ์‹คํ–‰ํ•˜๋Š” ์„ค์ •. ์ด๋•Œ db์ด๋ฆ„์€ testdb๋กœ ์ƒ์„ฑ๋œ๋‹ค.spring.datasource.url=jdbc:h2:mem:testdb# ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ • (๋””ํดํŠธ username: sa, ๋””ํดํŠธ password: ์—†์Œ) spring.datasource.username=saspring.datasource.pass.. 2025. 3. 6.
[jdbc] ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ (feat. ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ) ๐Ÿ“‘ ์ด์ „ ๊ธ€: ํŠธ๋žœ์žญ์…˜โœ… ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌํŠธ๋žœ์žญ์…˜์€ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์ด ์žˆ๋Š” ์„œ๋น„์Šค ๊ณ„์ธต์—์„œ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค.๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด, ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๋ถ€๋ถ„์œผ๋กœ ์ธํ•ด ์‹คํ–‰์ทจ์†Œ๋˜์–ด์•ผ ํ•˜๋Š” ์ž‘์—…๋“ค์€ ์ „๋ถ€ ๋กค๋ฐฑํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด Connection์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค!์„œ๋น„์Šค ๊ณ„์ธต์—์„œ ํŠธ๋žœ์žญ์…˜์„ ์œ ์ง€ํ•˜๋ ค๋ฉด์„œ๋น„์Šค ๊ณ„์ธต์—์„œ ์ปค๋„ฅ์…˜์„ ๋งŒ๋“ค๊ณ , ํŠธ๋žœ์žญ์…˜์— ๋๋‚  ๋•Œ๊นŒ์ง€ ๋™์ผํ•œ ์ปค๋„ฅ์…˜์„ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค. ๐Ÿ“Œ ๋ฌธ์ œ์ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•ด์„œ๋Š” ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ๋‚˜๋จธ์ง€ ํด๋ž˜์Šค๋“ค์˜ ๋ณ€๊ฒฝ์ด ์ตœ์†Œํ™”๋˜์–ด์•ผ ํ•œ๋‹ค. ์ฆ‰ UI๊ฐ€ ๋ฐ”๋€Œ๊ณ , ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ธฐ์ˆ ์ด ๋ฐ”๋€๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ํ•ต์‹ฌ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์ธ ์„œ๋น„์Šค ๊ณ„์ธต์€ ์ตœ๋Œ€ํ•œ ์ˆ˜์ •๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํŠธ๋žœ์žญ์…˜์„ ์„œ๋น„์Šค ๊ณ„์ธต์—์„œ ์‹œ์ž‘ํ•ด๋ฒ„๋ฆฌ๋ฉด์„œ๋น„์Šค ๊ณ„์ธต์€ jdbc.. 2025. 2. 5.
JVM ํž™ ์˜์—ญ๊ณผ GC โœ… JVM ์•„ํ‚คํ…์ฒ˜ ์ด๋ฏธ์ง€ ์ถœ์ฒ˜: https://medium.com/java-for-beginners/understanding-java-virtual-machine-jvm-architecture-e68d1c611026  JVM ๊ตฌ์„ฑ์š”์†Œ๋Š” ํฌ๊ฒŒ Class Loader, Runtime Data Area, Execution Engine, ๊ทธ๋ฆฌ๊ณ  JNI์™€ Native method library๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์†Œ์Šค์ฝ”๋“œ(.java)๋ฅผ ์ปดํŒŒ์ผํ•˜์—ฌ ๋ฐ”์ดํŠธ์ฝ”๋“œ(.class)๋กœ ๋ณ€ํ™˜์‹œํ‚จ๋‹ค.ํด๋ž˜์Šค ๋กœ๋”๊ฐ€ ํ•„์š”ํ•œ ์‹œ์ ์— ํ•ด๋‹น ํด๋ž˜์Šค์˜ ๋ฐ”์ดํŠธ์ฝ”๋“œ(.class)๋ฅผ JVM์˜ Runtime Data Area์— ๋กœ๋“œ(์ ์žฌ)ํ•œ๋‹ค.JVM Execution engine์€ ๋กœ๋“œ๋œ ํด๋ž˜์Šค์˜ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ํ•ด์„(interp.. 2025. 1. 30.
ํŠธ๋žœ์žญ์…˜ ๐Ÿ“‘ ์ด์ „ ๊ธ€: [Jdbc] ์ปค๋„ฅ์…˜ ํ’€๋ง๊ณผ DataSource ์ธํ„ฐํŽ˜์ด์Šค  โœ… ํŠธ๋žœ์žญ์…˜ ๊ฐœ๋…๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•œ๋‹ค.ํŒŒ์ผ ์‹œ์Šคํ…œ ๋Œ€์‹  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ  ์ค‘ ํ•˜๋‚˜์ด๊ธฐ๋„ ํ•˜๋‹ค. ํŠธ๋žœ์žญ์…˜์ด๋ž€, ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋ณด์žฅํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.ํŠธ๋žœ์žญ์…˜์—์„œ ๋ชจ๋“  ์ž‘์—…์ด ์„ฑ๊ณตํ•ด์„œ DB์— ์ •์ƒ ๋ฐ˜์˜๋˜๋Š” ๊ฒƒ์„ Commit์ด๋ผ๊ณ  ํ•œ๋‹ค.ํŠธ๋žœ์žญ์…˜์—์„œ ์ž‘์—… ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ•ด์„œ ํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘ ์ „ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ์„ Rollback์ด๋ผ๊ณ  ํ•œ๋‹ค. ๐Ÿ“Œ ํŠธ๋žœ์žญ์…˜ ACID- ํŠธ๋žœ์žญ์…˜์€ ์›์ž์„ฑ(Atomicity), ์ผ๊ด€์„ฑ(Consistency), ๊ฒฉ๋ฆฌ์„ฑ(Isolation), ์ง€์†์„ฑ(Durability)์„ ๋ชจ๋‘ ๋ณด์žฅํ•ด์•ผ ํ•œ๋‹ค. ๐Ÿฅ ์›์ž์„ฑ (Atomicity)- ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ์‹คํ–‰ํ•œ ์ž‘์—…๋“ค์€ ๋งˆ์น˜ ํ•˜.. 2025. 1. 30.
[Jdbc] ์ปค๋„ฅ์…˜ ํ’€๋ง๊ณผ DataSource ์ธํ„ฐํŽ˜์ด์Šค ๐Ÿ“„ ์ด์ „ ๊ธ€: JDBC์™€ SQL Mapper, ORM ๊ฐ„๋‹จํžˆ ์ •๋ฆฌ  โœ… DriverManager- JDBC๊ฐ€ ๋“ฑ์žฅํ•จ์œผ๋กœ์จ "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜ - SQL ์ฟผ๋ฆฌ ๋‚ ๋ฆฌ๊ธฐ - ์‘๋‹ต ๋ฐ›๊ธฐ" ๊ณผ์ •์ด ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•˜๊ณ  ์ˆ˜์›”ํ•ด์กŒ๋‹ค. - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜์„ ์ƒ์„ฑํ•˜๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” DriverManager.getConnection() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๐Ÿฅ ์˜ˆ์‹œ ์ฝ”๋“œ// DriverManager๋ฅผ ์ด์šฉํ•œ ์ปค๋„ฅ์…˜ ํš๋“String url = "jdbc:h2:tcp://localhost/~/test";String username = "sa";String password = "";Connection connection = DriverManager.getConnection(url, username, passwor.. 2025. 1. 28.
JDBC์™€ SQL Mapper, ORM ๊ฐ„๋‹จํžˆ ์ •๋ฆฌ โœ… JDBC๋Š”   ์™œ ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ์„๊นŒ?- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๋™ํ•˜์—ฌ ๊ฐ’์„ ์กฐํšŒํ•˜๊ฑฐ๋‚˜, ์ €์žฅํ•˜์—ฌ ๊ด€๋ฆฌํ•œ๋‹ค.- ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๋™ ์ž‘์—…์„ ํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ, ์ฟผ๋ฆฌ ์‹คํ–‰, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋ถ€ํ„ฐ ์‘๋‹ต ๋ฐ›๊ธฐ์˜ ๊ณผ์ •์„ ์†Œ์Šค์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.- ๊ณผ๊ฑฐ์—๋Š” DB ์ปค๋„ฅ์…˜ ์ŠคํŽ™์ด๋‚˜ SQL ๋ฌธ๋ฒ• ๋“ฑ์ด ๋ชจ๋‘ ๋‹ฌ๋ž๊ธฐ ๋•Œ๋ฌธ์—, DB๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋„ ์ „๋ถ€ ์ˆ˜์ •ํ•ด์•ผ ํ–ˆ๋‹ค. - ๊ทธ๋ž˜์„œ JDBC๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค. โœ… JDBC๋ž€?- JDBC๋Š” ์ž๋ฐ”์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†, ์ฟผ๋ฆฌ, ์‘๋‹ต๋ฐ›๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•ด๋‘” ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.- JDBC ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค๋Š” java.sql ํŒจํ‚ค์ง€์— ์ •์˜๋˜์–ด ์žˆ๋‹ค.    (์—ฐ๊ฒฐ ๊ด€๋ จ - java.sql.Connection, ์ฟผ๋ฆฌ ๊ด€๋ จ - java.sql.Stat.. 2025. 1. 21.
728x90