DAO
안에 DB
와 연결하는 코드들은 Spring
에서 자동으로 해주니 기능만 만들면 된다.
DAO
에서는 안에 연결이라든지 데이터 전달 또는 가져오기 이런건 Mabits
가 다 하기 때문에 안에 기능을 만들 필요 가 없다.
그래서 추상메소드로 만들고 클래스를 interface
로 만들어준다.
이제는 DAO
역활도 정확히는 아니기때문에 SQL
을 연결해준다 의미에서 Mapper
이라고 이름을 변경해주는게 좋다.
interface BoardMapper
과 BoardMapper.xml
의 이름은 동일해야 조건이 성립되서 사용할 수 있다.
이 3가지가 동일해야 한다.
메소드 이름을 아이디에 넣어준다.
그러면 알아서 연결이 된다. -> Mabis
가 다 연결해준다.
돌려줄 데이터가 있다면 resultType
를 통해서 돌려주게 된다.
그럼이제 Spring
에다가 Mabits
를 연결 할 것이고,
그 DB
연결해주는 도움을 주기 위해 Spring
에 DB
를 연결할 것이다.
DB
를 연결하기 위해서 먼저 HikariCP
를 사용할 것이다.
HikariCP (DBCP)
데이터 베이스 커넥션 풀로 커넥션 객체를 일정 개수 생성 후 효율성 있게 돌려 사용하는 기술
나는 위에 있는 사이트를 보고 공부를 했으니 참고를 하면 될 것 같다.
기능들을 추가한다.
히카리 객체를 알 수 있게끔 등록을 해준다.
그런데 안에 내용물들이 Oracle
로 되어있으니 MySQL
로 변경을 해줘야 한다.
프로퍼티는 HikariConfig
클래스 안에 들어가는 속성(필드) 값이다. 그러므로 name
값이 다르면 안된다.
해당부분을 mySQL
과 일치하게 맞춰준다.
그런데 이렇게만하면 HikariConfig
에서 mySQL jar
파일이 필요해서 mySQL API
디펜던시에서 추가를 해준다.
아래 데이터 소스에서 위에 만든걸 참조해서 사용하게 된다. (생성자로)
이제 MaBits
연결을 추가로 또 해보자
Mabits
를 만들면 히카리cp
를 참조하게 된다.
이해가 안되는 분들을 위한 대략적인 설명이니 위 사진을 참고하자.
그다음 아래와 같이 추가 API
넣어준다 DB
관련됨
Mybatis
, Spring-jdbc
, Mybatis-spring
그래서 히카리CP
스키마를 사용해야 하기때문에 상단에 문자열 추가
xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
<mybatis-spring:scan base-package="kr.smhrd.mapper"/>
그리고 DB
연결 패키지를 찾아야 하기때문에 스캔 태그도 추가한다.
myBatis
에서는 SqlSessionFactoryBean
커넥션 연결 관리를 한다. (커넥션 풀을 사용)
기존에 흐름에서 이제 컨트롤러에서는 사용하기만 할 것이다 우리가 직접 다 쓰는것이 아니라
Spring
안에서는 객체생성해서 잘 사용 하지 않는다.
객체를 생성해서 사용하면 결합도가 높아질 수밖에 없다.
그러면 수정하는데 어려움이 생긴다. -> 하나를 수정하면 다 수정해야하기 때문에 그래서 결합도를 낮춰줘야 한다.
그래서 방법은?
A
에서 B
를 가져다 사용하는 것이 아니라.
특정 메모리에 객체를 다 넣어놓고 가져다 사용하는 방법을 채택한다.
그래서 이것을 Spring
에서는 DI (의존성 주입)
이라고 한다.
이런식으로 의존성 주입이 가능하다.
오늘 부분이 정말 어렵고 중요한 부분이 많은것 같다.
앞으로 까먹거나 그럴때에 와서 한번씩 확인차 보던가 아니면 복습을 한번 더 해야겠다.