프로젝트 구현/리얼 월드

3. 프로젝트 생성 및 mySQL DB 연동

LeeJerry 2022. 2. 20. 16:50

 1. 프로젝트 생성

 

본격적으로 프로젝트를 시작할 시간이다.

https://start.spring.io/로 들어가서, 스프링 프로젝트를 생성한다.

그레이들 버전, 자바 11 버전으로 프로젝트를 생성하였으며, 이번 프로젝트의 템플릿 엔진으로는 타임리프를 사용, SQL 매핑 프레임워크로는 마이바티스를 사용할 것이다. 따라서 dependency에서 이 두개를 찾아서 추가해준다. 

이 외에도 로그인 처리를 위한 spring security, 롬복 등을 추가해 준다.

 

후에 사용할 CI/CD 툴과의 연동을 위해서, 깃허브 저장소도 살포시 하나 만들어 준다.

 

깃허브 주소 : https://github.com/SangHoonly/real-world

 


 

2. mySQL 연동

먼저 mySQL 서버를 3306 포트로 띄운다.(기본 설정이 3306 포트로 지정되어 있으므로, mySQL을 그냥 실행시키면 될 것이다.) 

그리고 스프링 톰캣 서버에서 mySQL 서버로 로그인할 계정을 하나 만든다. root 계정을 사용해도 상관없다. 사진은 mySQL Workbench로 새 계정을 만드는 모습이다.

 



이후 프로젝트 mail/resources 디렉토리의 application.properties에서 데이터소스 설정들을 작성한다. 커넥션 풀로 히카리CP를 사용할 것이며, 방금 만들었던 로그인 계정, mysql 서버 url을 설정해 준다.

 

 



스프링 서버가 실행되고 동작하면서 데이터베이스 관련 설정 내용들을 적용/관리하기 위해선 이 설정들을 빈으로 등록해야 한다. 또한 마이바티스와 DB를 연동해줄 설정 내용들이 필요한데, configuration 파일을 하나 생성하여 이 두 작업을 진행할 것이다.

 

 프로젝트의 main/java/LeeJerry.realWorld 디렉터리에 configuration 디렉토리를 생성 후, DatabaseConfiguration.java 파일을 생성한다. 그리고 다음과 같이 코드를 작성한다.

 


참고 1 : DataSource란? (https://docs.oracle.com/javase/7/docs/api/javax/sql/DataSource.html)

참고 2: SqlSessionFactory? (http://mybatis.org/spring/ko/factorybean.html)

 

DataSource로 HikariDataSource를 지정해주고, DB와 마이바티스 연동을 위한 SqlSessionFactory를 설정해준다. SqlSessionFactory는 말 그대로 SqlSession 객체를 만드는데, 이 SqlSession 객체가 DB서버로 SQL문을 날려주는 역할을 한다. SqlSessionFactory는 꼭! DataSource를 설정해주어야 한다.

 

+ 추가

자바는 카멜 케이스를 쓰지만, DB는 스네이크 케이스를 사용한다.

따라서 카멜 케이스와 스네이크 케이스를 매핑시켜줄 설정이 필요한데, 마이바티스에서는 이러한 설정을 지원한다.

 

  application.properties에 한 줄 추가

 
 
 
DatabaseConfiguration.java 클래스에 다음 메서드를 추가.
application.properties에서 마이바티스 관련 설정을 가져와 자바 빈으로 등록한다.
 
 

 

 
sqlSessionFactoryBean 객체에 마이바티스 설정을 추가.