우리가 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
이 붙어있어야 한다.
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까지 포함한 전체흐름이다.
다음에는 글쓰기 기능을 추가해서 글이 입력 및 출력이 되는지 확인 할 예정이다.
내용을 아직 완벽하게 이해하지 못했더라도 위에 있는 요약 사진을 보고 틈틈히 복습을 해야겠다.