-
H2 λ°μ΄ν°λ² μ΄μ€ λ€μ΄λ‘λ
-
sh ./h2/bin/h2.shμ μ -
http://218.38.137.28:8082/?key=β‘οΈhttp://localhost:8082/?key= -
μ΅μ΄ νλ² νμΌ μ§μ μ κ·Ό ν
~/test.mv.dbνμΌ μμ± νμΈ- JDBC URL:
jdbc:h2:~/test - μ¬μ©μλͺ
:
sa
- JDBC URL:
-
κ·Έ μ΄νλ νλ‘ν μ½λ‘ μ μ
- JDBC URL:
jdbc:h2:tcp://localhost/~/test - μ¬μ©μλͺ
:
sa
- JDBC URL:
- JDBC λ μλ°μμ λ°μ΄ν°λ² μ΄μ€μ μ μν μ μλλ‘ νλ μλ° API
- μ ν리μΌμ΄μ λ‘μ§μ JDBC νμ€ μΈν°νμ΄μ€μλ§ μμ‘΄ β‘οΈ DB κ΅μ²΄ μ JDBC λλΌμ΄λ²λ§ λ³κ²½νλ©΄ λ¨
- νκ³ : JDBCλ₯Ό row λ λ²¨λ‘ μ¬μ© μ λ°λ³΅ μ½λκ° λ§λ€
JDBC Connection μΈν°νμ΄μ€
- jdbcλ java.sql.Connection νμ€ μ»€λ₯μ μΈν°νμ΄μ€λ₯Ό μ μν¨
- H2 λ°μ΄ν°λ² μ΄μ€ λλΌμ΄λ²λ JDBC Connection μΈν°νμ΄μ€λ₯Ό ꡬνν
org.h2.jdbc.jdbcConnectionꡬν체λ₯Ό μ 곡
JDBC DriverManager
- μ ν리μΌμ΄μ
λ‘μ§μμ 컀λ₯μ
μ΄ νμνλ©΄
DriverManager.getConnection()νΈμΆ DriverManagerλ λΌμ΄λΈλ¬λ¦¬μ λ±λ‘λ λλΌμ΄λ² λͺ©λ‘μ μλμΌλ‘ μΈμ- μ΄ λλΌμ΄λ²λ€μκ² μμ°¨μ μΌλ‘ 컀λ₯μ μ νλν μ μλμ§ νμΈν¨
- μ΄λ κ² μ°Ύμ 컀λ₯μ ꡬνμ²΄κ° ν΄λΌμ΄μΈνΈμκ² λ°νλ¨
JDBC ResultSet
-
ResultSetμ μλμ κ°μ΄ μκΈ΄ λ°μ΄ν° ꡬ쑰 -
Cursor:ResultSetλ΄λΆμ μλ 컀μλ₯Ό μ΄λν΄μ λ°μ΄ν°λ₯Ό μ‘°νrs.next()λ₯Ό νΈμΆνλ©΄ 컀μκ° μ΄λνκ³ , row μ‘΄μ¬ μ¬λΆλ₯Ό λ°νrs.next()κ²°κ³Όκ°trueλ©΄ 컀μμ μ΄λ κ²°κ³Ό λ°μ΄ν°κ° μλ€λ λ»rs.next()κ²°κ³Όκ°falseλ©΄ 컀μμ μ΄λ κ²°κ³Ό λ°μ΄ν°κ° μλ€λ λ»
- DB 컀λ₯μ
μ λ§€λ² νλν κ²½μ° μ ν리μΌμ΄μ
λ‘μ§λ§λ€ 컀λ₯μ
μ μλ‘ λ§λλ μκ°κ³Ό 리μμ€κ° μμλλ€.
- 컀λ₯μ
νλ κ³Όμ
- μ ν리μΌμ΄μ λ‘μ§μ DB λλΌμ΄λ²λ₯Ό ν΅ν΄ 컀λ₯μ μ μ‘°ννλ€.
- DB λλΌμ΄λ²λ DBμ TCP/IP 컀λ₯μ μ μ°κ²°νλ€.
- DB λλΌμ΄λ²λ ID, PWλ₯Ό ν΅ν΄ DBμ μΈμ¦νκ³ λ΄λΆμ DB μΈμ μ μμ±νλ€.
- DBκ° μ»€λ₯μ μμ±μ΄ μλ£λμλ€λ μλ΅μ 보λΈλ€.
- DB λλΌμ΄λ²λ 컀λ₯μ κ°μ²΄λ₯Ό μμ±ν΄μ ν΄λΌμ΄μΈνΈμκ² λ°ννλ€.
- 컀λ₯μ
νλ κ³Όμ
- λ°λΌμ μ ν리μΌμ΄μ μ λμΈ λ 컀λ₯μ κ°μ²΄λ₯Ό 미리 μμ±ν΄λκ³ μ¬μ©νλλ°, μ΄λ₯Ό 컀λ₯μ ν μ΄λΌκ³ νλ€.
컀λ₯μ ν
- 컀λ₯μ
νμ ν΅ν 컀λ₯μ
νλ κ³Όμ
- μ ν리μΌμ΄μ μ λμ°λ μμ μ 컀λ₯μ νμ 컀λ₯μ μ 미리 ν보ν΄μ νμ 보κ΄νλ€.
- μ ν리μΌμ΄μ λ‘μ§μ΄ 컀λ₯μ νμ 컀λ₯μ μ μμ²νλ©΄ 컀λ₯μ μ μμ μ΄ κ°μ§κ³ μλ 컀λ₯μ μ€ νλλ₯Ό λ°ννλ€.
- μ ν리μΌμ΄μ
λ‘μ§μ ν΄λΉ 컀λ₯μ
μ μ¬μ©ν΄μ SQLμ DBμ μ λ¬νκ³ κ·Έ κ²°κ³Όλ₯Ό λ°λλ€.
- 컀λ₯μ νμ λ€μ΄ μλ 컀λ₯μ μ DBμ TCP/IP 컀λ₯μ μ΄ μ°κ²°λμ΄ μλ μνμ΄κΈ° λλ¬Έμ μΈμ λ μ§ μ¦μ SQLμ μ λ¬ν μ μλ€.
- μ ν리μΌμ΄μ λ‘μ§μ΄ 컀λ₯μ μ λͺ¨λ μ¬μ©νλ©΄, 컀λ₯μ μ΄ μ΄μ μλ μνλ‘ μ»€λ₯μ νμ ν΄λΉ 컀λ₯μ μ λ°ννλ€.
- 컀λ₯μ νμ μ΄μ©νλ©΄ μ ν리μΌμ΄μ λ‘μ§μ DBμ 컀λ₯μ μ λ§Ίλ μκ°μ΄ μμλμ§ μλλ€.
- 컀λ₯μ νμ μλ² λΉ μ΅λ 컀λ₯μ μλ₯Ό μ νν μ μμ΄, DBλ₯Ό 보νΈνλ€.
- μ ν리μΌμ΄μ
μ λμΈ λ 컀λ₯μ
κ°μ²΄λ₯Ό 미리 μμ±ν΄λκ³ μ¬μ©νλ λ°©λ²

λ°μ΄ν° μμ€
-
컀λ₯μ μ μ»λ λ°©λ²μ μμ νμ΅ν
JDBC DriverManagerλ₯Ό μ§μ μ¬μ©νκ±°λ, 컀λ₯μ νμ μ¬μ©ν μ μλ€.-
λ§μ½
JDBC DriverManagerλ₯Ό ν΅ν΄ 컀λ₯μ μ νλνλ€κ°, HikariCP 컀λ₯μ νμ μ¬μ©νλ λ°©λ²μΌλ‘ λ³κ²½νλ€λ©΄?β‘οΈ μ»€λ₯μ μ νλνλ μ ν리μΌμ΄μ μ μ½λλ₯Ό ν¨κ» λ³κ²½ν΄μΌ νλ€. DriverManager μμ HikariCP λ‘ μμ‘΄ κ΄κ³κ° λ°λκΈ° λλ¬Έμ΄λ€.
-
λΏλ§ μλλΌ DPCP2 μμ HikariCP λ‘ μ»€λ₯μ νμ λ³κ²½ν λμλ μ ν리μΌμ΄μ μ μ½λκ° λ³κ²½λλ€.
-
-
DataSorceλ 컀λ₯μ μ νλνλ λ°©λ²μ μΆμννλ μΈν°νμ΄μ€μ΄λ€. ν΅μ¬ κΈ°λ₯μ 컀λ₯μ μ‘°νgetConnection()μ΄λ€.
-
λλΆλΆμ 컀λ₯μ νμ
DataSorceμΈν°νμ΄μ€λ₯Ό μ΄λ―Έ ꡬνν΄λμλ€. λ°λΌμ 컀λ₯μ ν ꡬν κΈ°μ μ λ³κ²½νκ³ μΆμΌλ©΄ ꡬν체λ₯Ό κ°μλΌμ΄λ€.-
JDBC DriverManagerλ₯Ό μ΄μ©νλ €λ©΄,DataSorceμΈν°νμ΄μ€λ₯Ό ꡬννDriverManagerDataSourceλ₯Ό μ΄μ©νλ€.DataSource dataSource = new DriverManagerDataSource(URL, USERNAME, PASSWORD); Connection con1 = dataSource.getConnection(); Connection con2 = dataSource.getConnection(); -
HikariCPλ₯Ό ν΅ν 컀λ₯μ νλ§HikariDataSource dataSource = new HikariDataSource(); dataSource.setJdbcUrl(URL); dataSource.setUsername(USERNAME); dataSource.setPassword(PASSWORD); dataSource.setMaximumPoolSize(10); dataSource.setPoolName("MyPool"); Connection con1 = dataSource.getConnection(); Connection con2 = dataSource.getConnection();- 컀λ₯μ νμ 컀λ₯μ μ μ±μΈλλ λ³λμ μ°λ λλ₯Ό μ¬μ©νλ€.
- μΉ μ ν리μΌμ΄μ μμ λμμ μ¬λ¬ μμ²μ΄ λ€μ΄μ€λ©΄ μ¬λ¬ μ°λ λμμ 컀λ₯μ νμ 컀λ₯μ μ λ€μνκ² κ°μ Έκ°λ€.
-
-
DataSorceλ₯Ό μ¬μ©νλ©΄ μ€μ κ³Ό μ¬μ©μ λΆλ¦¬ν μ μλ€.
- νΈλμμ
μ λͺ¨λ μμ
μ΄ μνλκ±°λ, λͺ¨λ μμ
μ΄ μνλμ§ μμμΌ νλ€.
- 컀λ°
Commit: λͺ¨λ μμ μ΄ μ±κ³΅ν΄μ λ°μ΄ν°λ² μ΄μ€μ μ μ λ°μνλ κ² - λ‘€λ°±
Rollback: μμ μ€ νλλΌλ μ€ν¨ν΄μ κ±°λ μ΄μ μΌλ‘ λλ리λ κ²
- 컀λ°
- νΈλμμ
ACID
- μμμ± : νΈλμμ λ΄μμ μ€νν μμ λ€μ λ§μΉ νλμ μμ μΈ κ²μ²λΌ λͺ¨λ μ±κ³΅νκ±°λ λͺ¨λ μ€ν¨νλ€.
- μΌκ΄μ± : νΈλμμ μ€ν μ κ³Ό νμ λ°μ΄ν°λ² μ΄μ€ μνλ μΌκ΄μ μ΄μ΄μΌ νλ€.
- κ²©λ¦¬μ± : λμμ μ€νλλ νΈλμμ λ€μ΄ μλ‘μκ² μν₯μ λ―ΈμΉμ§ μλλ‘ νλ€. 격리μ±μ λμμ±κ³Ό κ΄λ ¨λ μ±λ₯ μ΄μλ‘ μΈν΄ νΈλμμ 격리 μμ€μ μ νν μ μλ€.
- μ§μμ± : νΈλμμ μ μ±κ³΅μ μΌλ‘ λλ΄λ©΄ κ·Έ κ²°κ³Όκ° νμ κΈ°λ‘λμ΄μΌ νλ€. μμ€ν μ λ¬Έμ κ° λ°μν΄λ DB λ‘κ·Έλ₯Ό ν΅ν΄ μ±κ³΅ν νΈλμμ λ΄μ©μ 볡ꡬνλ€.
- 컀λ₯μ
μ μμ±νλ©΄, DB λ΄λΆμ μΈμ
μ΄ μκΈ΄λ€.
- μΈμ μ νΈλμμ μ μμνκ³ , μ»€λ° λλ λ‘€λ°±μ ν΅ν΄ νΈλμμ μ μ’ λ£νλ€.
- μλ μ»€λ° λͺ¨λλ‘ μ€μ νλ κ²μ νΈλμμ μ μμνλ€κ³ νννλ€.
set autocommit false; insert into member(member_id, money) values ('data3', 10000); insert into member(member_id, money) values ('data4', 10000); commit;
νΈλμμ μ μ μ©
- νΈλμμ μ λΉμ¦λμ€ λ‘μ§μ΄ μλ μλΉμ€ κ³μΈ΅μμ μμνλ€.
- νΈλμμ μ μμνλ €λ©΄ 컀λ₯μ μ΄ νμνλ€. β‘οΈ μλΉμ€ κ³μΈ΅μμ 컀λ₯μ μ λ§λ€κ³ , νΈλμμ μ»€λ° μ΄νμ 컀λ₯μ μ μ’ λ£νλ€.
- νΈλμμ μ μ¬μ©νλ λμ κ°μ 컀λ₯μ (=μΈμ )μ μ μ§νλ€.
