ORM λ°©μμ νλ μ μν¬ μ
λλ€.ORM λ°©μμ΄λ (Object) (Relational) (Mapping)ORMμ μ΄μ©νλ©΄EX : Mysqlμ λνμ μΈ κ΄κ³νλ°μ΄ν°λ² μ΄μ€(RDB) μ΄λ©°
μλμ 쿼리μ κ°μ΄ μμ±νκ² λλ©΄ Board ν
μ΄λΈλ₯Ό μ‘°νν μ μμ΅λλ€.
SELECT * FROM Board;
ORM μ μ¬μ©νκ² λλ©΄ Board ν
μ΄λΈκ³Ό λ§€νλ κ°μ²΄λ₯Ό board λΌκ³ ν λ, board.findAll(), board.findById() μ κ°μ λ©μλλ‘ νΈμΆνμ¬ μ‘°ν ν μ μμ΅λλ€.
μ₯μ : λ©μλλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μ½κ² μ‘°μν μ μμ΄, κ°λ°μκ° κ°λ°μλ§ μ§μ€ν μ μλ€.
λ¨μ : νλ‘μ νΈμ 볡μ‘μ±μ΄ 컀μ§κ²½μ° 쿼리λ₯Ό μμ±ν μ€ μμμΌνλ€. μ¬κΈ°μ 볡μ‘μ± μ΄λΌν¨μ, Joinμ΄ λ§μ ν
μ΄λΈμ κ°―μμ ν
μ΄λΈ κ°―μκ° λ§μ κ²½μ°λ₯Ό λ§ν©λλ€.
Mybatisλ₯Ό μ¬μ©νκΈ° μμ λ°μ΄ν°λ² μ΄μ€ μ€μ μ ν΄μΌν©λλ€.
μλμ κ°μ΄ μμ± ν μ μμΌλ©°, properties νμμ νΈλ¦¬κ΅¬μ‘°λ‘ μμ±νλ©΄ μλ©λλ€.
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: ${DATASOURCE_URL}
username: ${DATASOURCE_USERNAME}
password: ${DATASOURCE_PASSWORD}
Mybatisλ .xml μ΄λΌλ νμΌκ³Ό 컀λ₯μ
μ λ§Ίκ² λ©λλ€.
β‘ .xml νμΌμ μ²μ κ²½νν΄λ΄μ κ°μκ° λλλ€μ μμΉμ ν΅ν΄ μ°Ύμ보μμ§λ§, λ°μ΄ν°λ² μ΄μ€μ λ§€νμ νκΈ°μν μΌμ ν νμμΈκ² κ°λ€.
β‘ μ΅κ·Όμλ μ΄λ
Έν
μ΄μ
μ ν΅ν΄ λ§€νμ νμ§λ§, .xml νμΌ νμμ΄ λ κ±°μμ΄κΈ΄ νμ§λ§, νμ¬λ μ¬μ©νλ νμ¬κ° μλ€.
DB 컀λ₯μ νμ μ΄ν΄ νκΈ° μν΄μλ "컀λ₯μ λΉμ©" μ΄λΌλ μ©μ΄λ₯Ό μμμΌ ν©λλ€.
κ·Έλ λ€λ©΄ 컀λ₯μ
λΉμ©μ΄λ λκΉ?
β‘ WAS μ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ°κ²°νκΈ° μν΄μλ λ§μ λΉμ©μ΄ λ λ€κ³ ν©λλ€.
INSERT λ¬Έμ μννκΈ° μν΄μλ μλμ κ΄νΈ μμ μλ λΉμ¨μ λΉμ©μ΄ λ λ€κ³ ν©λλ€.
1.Connection (3)
2.Sending query to server(2)
3.Parsing query(2)
~~ λ±
μ΄μ κ°μ΄ Connection λΉμ©μ΄ κ°μ₯ ν° κ²μ μμ μμ΅λλ€. μ΄λ₯Ό 보μνλ λ°©λ²μ΄ "컀λ₯μ
ν" μ΄λΌλ κ²μ
λλ€.
λΆνλ₯Ό μ€μ¬μ£ΌκΈ° μν΄ DBμ λ€μ΄κ°κΈ°μ μ λκΈ°νλ μ₯μ μ΄λ©°, νμν λ λ§λ€ νμ 컀λ₯μ μ ν΅ν΄ λ°ννλ κΈ°λ² μ λλ€.
(미리 λ§λ€μ΄ λμ 컀λ₯μ μ μ¬μ©)
μ€νλ§ λΆνΈμμλ 컀λ₯μ
νμ κ΄λ¦¬νκΈ° μν΄ HikariCp λΌλ νλ μ μν¬λ₯Ό μ¬μ©ν©λλ€.
β‘ HikariCp λ νν @Configuration μ΄λ
Έν
μ΄μ
μ μ¬μ©ν΄ μ€μ νλ€κ³ ν©λλ€.
β‘ νλ‘μ νΈ λ€μ΄κ°λ©΄ μ μ© ν΄λ΄μΌκ² λ€.
νλ‘μ νΈλ₯Ό μ΄λ²μ£Όλ΄μ λ€μ΄κ°λ€κ³ νμ λ€. κ³νμΌλ‘λ μλ£λ κΉμ§ 3κ°μ νλ‘μ νΈλ₯Ό νλ€κ³ νμ¬, νλ‘μ νΈλ₯Ό λ§μ΄ν΄μ ν¬νΈν΄λ¦¬μ€λ₯Ό μλκ²μ μ’μκ² κ°λ€.