Note.7 DataBase연결 API구조

Jay·2023년 2월 7일
1

Spring

목록 보기
7/14
post-thumbnail

📌 DataBase

📖 DAO 작성하기

DAO안에 DB와 연결하는 코드들은 Spring에서 자동으로 해주니 기능만 만들면 된다.

DAO에서는 안에 연결이라든지 데이터 전달 또는 가져오기 이런건 Mabits가 다 하기 때문에 안에 기능을 만들 필요 가 없다.
그래서 추상메소드로 만들고 클래스를 interface로 만들어준다.

이제는 DAO역활도 정확히는 아니기때문에 SQL을 연결해준다 의미에서 Mapper이라고 이름을 변경해주는게 좋다.
interface BoardMapperBoardMapper.xml의 이름은 동일해야 조건이 성립되서 사용할 수 있다.

이 3가지가 동일해야 한다.

메소드 이름을 아이디에 넣어준다.
그러면 알아서 연결이 된다. -> Mabis가 다 연결해준다.

돌려줄 데이터가 있다면 resultType를 통해서 돌려주게 된다.

그럼이제 Spring에다가 Mabits를 연결 할 것이고,
DB 연결해주는 도움을 주기 위해 SpringDB를 연결할 것이다.

📖 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 (의존성 주입) 이라고 한다.

이런식으로 의존성 주입이 가능하다.

📌 마무리

📖 한마디

오늘 부분이 정말 어렵고 중요한 부분이 많은것 같다.

앞으로 까먹거나 그럴때에 와서 한번씩 확인차 보던가 아니면 복습을 한번 더 해야겠다.

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

0개의 댓글