SPRING BOOT

[스프링부트 8] Spring Boot 데이터베이스(MSSQL) 연결 1

내. 일. 을 바꾸는 업무 자동화 2021. 11. 17. 17:26
반응형

이번 포스팅에서는 지난시간까지 진행되었던 JSP와 Thymeleaf에 DB를 연결해 보도록 하겠습니다. 

MYSQL, MariaDB, MSSQL 등 여러가지 DB의 종류가 있지만 MS Azure 포탈을 이용하여 

무료로 CLOUD MSSQL 데이터베이스를 구축해 놓은 포스팅이 있어, 이번 시간에는 MSSQL로 진행해 보도록 하겠습니다. (사실 어떤 DB를 써도 아무런 문제가 될 것은 없습니다. )

 

아! 혹시 Azure에서 무료로 제공하는 MSSQL DATABASE를 구현해서 실습을 따라 하실 분들은, 

여기 링크로 이동하여 DATABASE를 만들고 진행하시면 더 편하실 것 입니다. 

 

자, 이제 시작해 보겠습니다. 

먼저 이론을 좀 설명해 드릴께요.. 

JDBC라는 용어를 한번쯤은 들어 보신 적 있으실 것 입니다. 

JDBC = Java DataBase Connectivity 단어 그대로 자바에서 DB에 연결하기 위한 API(인터페이스) 입니다. 

DB의 종류에 상관 없이 데이터베이스를 처리할 수 있습니다. 아마.. 그림으로 간단히 설명해 보면 아래와 같은 이미지로 설명될 수 있을 것 같네요.

이런 과정을 통해 DB와 연결이 진행될 것입니다. 

다음은 Connection Pool (커넥션 풀) 이라는 용어도 들어 보셨겠죠?

DB를 사용할 때마다 Connection을 하고 Close를 한다면 번거롭고 빈번한 작업으로 많은 부하가 걸릴 것 입니다. 이를 해결하기 위해 일종의 Connection 객체를 만들어 Pool에 담아 놓고 관리하는 것을 의미 합니다. 당연히 불필요한 작업들이 사라지므로 성능의 향상을 기대할 수 있을 것 이구요~ 메모리도 효율적으로 운영 된답니다. 

즉!! JDBC 실행과정 중에 생성될 Connection 객체를 미리 만들어 Pool안에서 관리하는 기법입니다. 

그림으로 설명하면 아래와 같겠네요~ 

다음으로 배워 볼 단어는 MyBatis (마이바티스)입니다. 이 단어도 익숙하죠? 

위에서 배운 JDBC, ConnectionPool 등을 위해서 상당부분의 코드를 작성하여야 할 것 입니다. 

Mybatis는 JDBC로 처리하는 코드와 파라미터 설정.. 그리고 결과 매핑을 아주 간단히 처리 할 수 있도록 도와주는 개발 프레임워크로 이해하시면 되겠습니다. 즉.. DB 레코드에 타입과 MAP의 인터페이스 등 매핑을 위해 XML 및 어노테이션을 사용하여 좀더 쉽게 개발할 수 있도록 하는 역할입니다. 마이바티스는 아파치 라이센스 2.0으로 배포되는 free 소프트웨어 입니다.  당연히 많이 쓰이겠죠?

 

자, 이론은 이정도만 이해하면 될 것 같구요~ 이제 실습을 통해 진행해 볼까요?

스프링부트에서 mybatis와 mssql을 사용하기 위에 pom.xml에 의존성을 추가 해 줍시다.

(다른 db의 의존성 규칙이 필요하시면 댓글 주시면 추가해 놓도록 하겠습니다.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!-- Mybatis 시작 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.3</version>
        </dependency>
        
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.3</version>
        </dependency>
        
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>
<!-- DB (MSSQL) Connection -->
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <scope>runtime</scope>
        </dependency>
cs

 

추가하고, 저장하신 후에는 아시죠? Maven Reload Project를 실행해 주세요~ 

다음은 application.properties 파일을 열어, Driver 설정을 추가해 주도록 합시다.

1
2
3
4
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:log4jdbc:sqlserver://ㅇㅇㅇ.database.windows.net;DatabaseName=SampleDB;sslProtocol=TLSv1.2
spring.datasource.username=아이디
spring.datasource.password=암호
cs

위의 규칙에 맞춰 작성 하면 아래와 같이 작성이 되겠죠?

혹시 이 부분에서 어려움이 있다면 댓글 주시기 바랍니다. 처음 해보는 분들은 충분히 헷갈릴 수 있다고 생각되네요~

또는 mssql이 아니라 다른 데이터베이스를 연결해야 한다면 마찬가지로 댓글 주세요~ 

다음은 아까 설명한 mybatis사용을 위한 mapper는 xml 형식을 사용한다고 했죠? 

mybatis의 mapper에 쿼리문을 인식할 수 있도록 아래와 같이 application.properties에 추가해 줍니다.

1
mybatis.mapper-locations=/mybatis/**/*.xml
cs

위 의미는 mapper의 경로를 지정한 것인데요, 아래와 같이 폴더를 생성해 주시면 됩니다.
(resources폴더 밑에 mybatis 폴더를 만들어 주세요)

이제 스프링부트에서 mybatis mapper의 위치는 resourecs/mybatis/에 확장자 xml을 인식하게 됩니다.

 

여기까지 진행하셨다면 이제 DATABASE 연결을 위한 설정은 모두 끝난  것 입니다. 

서버를 기동해도 별다른 차이점을 느끼지 못하실 텐데요.. 일단 설정이 끝난 것이니 아쉬워 하지 마시구요~ 

 

이제, 실제로 데이터베이스의 테이블을 조회하여 데이터를 뷰로 가져오는 실습을 다음 포스팅에서 진행해 보도록 하겠습니다.

 

반응형