Note.8 Hikari CP / DB

JayΒ·2023λ…„ 2μ›” 13일
1

Spring

λͺ©λ‘ 보기
8/14
post-thumbnail

πŸ“Œ Hikari CP

πŸ“– μ „ λ‚΄μš© 볡슡

μš°λ¦¬κ°€ MaBitsλ₯Ό ν†΅ν•΄μ„œ DB연동 FrameWorkλ₯Ό μ‚¬μš©ν•  것이닀.
DB연동 μ‹œμ— 히카리CP (DBCP)λ₯Ό ν™œμš©ν•΄μ„œ μ‚¬μš©ν•  것인데,
λ¨Όμ € Eclipse에 νžˆλΌν‚€ CPλ₯Ό μ„€μΉ˜ν•˜μ˜€κ³  히카리 CPλŠ” DB 연동 컀λ„₯μ…˜ 개수λ₯Ό 일정 생성 ν›„ μž¬ν™œμš©ν•˜λŠ” 기법 (DBCP) 이 μ–˜λ₯Ό κ°€μ Έλ‹€κ°€ ν™œμš©ν•œλ‹€.

κ·Έ 히카리 CPλ₯Ό MaBatisκ°€ ν™œμš©ν•˜λ©° κ·Έ DB μ‚¬μš©μ‹œ ν™œμš©ν•˜λŠ” 녀석이 SqlSessionFactoryBean 이닀.

κ·Έλž˜μ„œ μš°λ¦¬λŠ” SQLSessionFactoryBean을 가지고 CRUDλ₯Ό ν•  수 μžˆλ‹€.

Spring μ»¨ν…Œμ΄λ„ˆλŠ” μŠ€ν”„λ§μ—μ„œ 객체(POJOλ“±)λ₯Ό κ΄€λ¦¬ν•˜λŠ” λ©”λͺ¨λ¦¬ 곡간이닀.

μš°λ¦¬λŠ” 객체λ₯Ό λ‹€ μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆμ— μƒμ„±ν•΄μ„œ 넣어쀄 것이닀.
그리고 ν•„μš”ν• λ•Œ μ–Έμ œλ“ μ§€ κΊΌλ‚΄μ„œ μ“Έ 수 μžˆλ‹€.

이것을 DI(μ˜μ‘΄μ„± μ£Όμž…)이라고 ν•œλ‹€.

πŸ“– 전체 흐름

μ„œλ²„λ₯Ό κ΅¬λ™ν•˜λŠ” μˆœκ°„ μ„œλ²„λŠ” web.xml을 읽어듀인닀.

web.xml에 보면 FrontController인 DispatcherServlet을 μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆμ— μ˜¬λ¦°λ‹€.
DispatcherServlet의 섀정은 servlet-context.xml에 μ„€μ •λ˜μ–΄ μžˆλ‹€.

μΆ”κ°€λ‘œ web.xml에 μ„€μ •ν•œ ContextLoaderListener도 μžˆλŠ”λ° 이 κ°μ²΄λŠ” DBμ—°κ²° μ„€μ •ν•΄λ†“μ€κ²Œ μŠ€ν”„λ§μ»¨ν…Œμ΄λ„ˆ 객체둜 μ˜¬λΌκ°„λ‹€. (μš°λ¦¬κ°€ μ„€μ •ν•œ 히카리 CP)

이 κ²½λ‘œκ°€ servlet-context.xml에 μž‘μ„±λ˜ μžˆλŠ” POJO듀이 μžˆλŠ” 곳을 μ•Œμ•„λ‚΄κΈ°μœ„ν•΄ scanν•œλ‹€λŠ” λœ»μ΄λ‹€.

그리고 ν•΄λ‹Ή ν΄λž˜μŠ€κ°€ scanμœ„μΉ˜μ— μžˆλ‹€κ³  ν•˜λ”λΌλ„ POJOκ°€ 되렀면 @Copntroller이 λΆ™μ–΄μžˆμ–΄μ•Ό ν•œλ‹€.

πŸ“– DB연동

BoardMapper.javaλ₯Ό λ©”λͺ¨λ¦¬μ— μ˜¬λ¦¬κΈ°μœ„ν•΄μ„œ root-context.xmlμ—μ„œ kr.smhrd.daoλ₯Ό scaneν•˜κ²Œ ν•œλ‹€.
μ™œλƒν•˜λ©΄ BoardMapper.java(interface)κ°€ kr.smhrd.dao νŒ¨ν‚€μ§€ μ•ˆμ— 있기 λ•Œλ¬Έμ΄λ‹€.

κ·Έλ‹€μŒ root-context.xml에
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring
이녀석을 좔가해야지 mybatis-spring:scan νƒœκ·Έλ₯Ό μ‚¬μš©ν•  수 있게 λœλ‹€.

http://mybatis.org/schema/mybatis-spring
http://mybatis.org/schema/mybatis-spring.xsd

μœ„ νƒœκ·Έλ„ 사이에 μΆ”κ°€ν•œλ‹€.

κ·Έλ‹€μŒ BoardMapper.java에 @Mapper을 μΆ”κ°€ ν•΄μ€˜μ•Όν•œλ‹€. (ν•˜μ§€λ§Œ μƒλž΅κ°€λŠ₯ν•˜λ‹€.)

μ΄λŸ°μ‹μœΌλ‘œ 연결이 λœλ‹€.

κ·Έλ‹€μŒ BoardMapper 레퍼런슀 λ³€μˆ˜μ— @Autowiredλ₯Ό ν•˜λ©΄ μ˜μ‘΄μ„± μ£Όμž… μ™„μ„±λœλ‹€.

그럼 이제 BoardControllerμ—μ„œ mapper μ•ˆμ— λ©”μ†Œλ“œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.

BoardMapper.javaλŠ” μžλ™μœΌλ‘œ μŠ€ν”„λ§μ»¨ν…Œμ΄λ„ˆ 객체둜 μ˜¬λΌκ°€ μžˆμœΌλ‹ˆ Autowired λ§΅ν•‘λ§Œ ν•΄μ£Όλ©΄ κ°€μ Έμ™€μ„œ μ‚¬μš©κ°€λŠ₯ν•˜λ‹€.

-> DI(μ˜μ‘΄μ„± μ£Όμž…)

μ£Όμ†Œλ‘œ μ ‘κ·Όν•˜λ©΄ DBμ•ˆμ— μžˆλŠ” 글듀이 μžλ™μœΌλ‘œ λ‚˜μ˜€κ²Œ λœλ‹€.

μ—¬κΈ°κΉŒμ§€ ν•΄μ„œ μ•ˆλ˜λŠ” μ‚¬λžŒλ“€μ€ λ””νŽœλ˜μ‹œ 라든지 맡퍼라든지 λ‹€ λ΄μ•Όν•œλ‹€.


μœ„ 사진은 DBκΉŒμ§€ ν¬ν•¨ν•œ 전체흐름이닀.


πŸ“Œ 마무리

πŸ“– 전체 흐름 μš”μ•½

πŸ“– ν•œλ§ˆλ””

λ‹€μŒμ—λŠ” κΈ€μ“°κΈ° κΈ°λŠ₯을 μΆ”κ°€ν•΄μ„œ 글이 μž…λ ₯ 및 좜λ ₯이 λ˜λŠ”μ§€ 확인 ν•  μ˜ˆμ •μ΄λ‹€.
λ‚΄μš©μ„ 아직 μ™„λ²½ν•˜κ²Œ μ΄ν•΄ν•˜μ§€ λͺ»ν–ˆλ”라도 μœ„μ— μžˆλŠ” μš”μ•½ 사진을 보고 ν‹ˆν‹ˆνžˆ λ³΅μŠ΅μ„ ν•΄μ•Όκ² λ‹€.

profile
Jay, a developer growing as a challenge, aims to surprise the world!

0개의 λŒ“κΈ€