상세 컨텐츠

본문 제목

Jaepl 프로젝트 (2) _ MySQL 연결

카테고리 없음

by seoia 2021. 6. 2. 01:37

본문

- MySQL이 이미 설치되어 있다는 가정 하에 진행합니다.

      -> 커넥션을 생성합니다.

      -> 스키마를 생성합니다.

      -> aQueryTool을 사용하여 데이터 모델을 만들고, SQL로 DDL을 export 합니다. DDL을 이용해 테이블로 생성합니다.

            (https://aquerytool.com/)

- GUI 툴인 Data Grip이 설치되어 있다는 가정 하에, Data Grip에서 진행합니다.


1.  Data Source 설정

스프링 부트에서 Data Source를 설정하는 방법은 두가지이다.

1. @Bean Annotation

2. application.properties 파일

 

이번 프로젝트에서는 application.properties 파일을 사용하여 데이터 소스를 설정하겠다.

(application.properties는 src/main/resources 아래에 있다.)

 

spring.datasource.jaepl.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.jaepl.jdbc-url=jdbc:mysql:데이터베이스 주소?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.jaepl.username=데이터베이스 유저이름
spring.datasource.jaepl.password=데이터베이스 비밀번호

 

2.  DB 연결 패키지 & 클래스 추가

생성된 기본 패키지 아래 configuration 패키지를 추가하고 그 아래에 DBConfiguration.java를 추가합니다.

 

DBConfiguration.java 에 다음과 같은 소스를 추가합니다.

package com.jaepl.site.configuration;
import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
@PropertySource("classpath:/application.properties")

public class DBConfiguration {

	@Autowired
	private ApplicationContext applicationContext;

	@Bean
	@ConfigurationProperties(prefix = "spring.datasource.hikari")
	public HikariConfig hikariConfig() {
		return new HikariConfig();
	}

	@Bean
	public DataSource dataSource() {
		return new HikariDataSource(hikariConfig());
	}

	@Bean
	public SqlSessionFactory sqlSessionFactory() throws Exception {
		SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
		factoryBean.setDataSource(dataSource());
//		factoryBean.setMapperLocations(applicationContext.getResources("classpath:/mappers/**/*Mapper.xml"));
		return factoryBean.getObject();
	}

	@Bean
	public SqlSessionTemplate sqlSession() throws Exception {
		return new SqlSessionTemplate(sqlSessionFactory());
	}

}

 

주석처리 된 부분은 SQL문이 작성된 파일의 경로에 대한 것이다. 자세한 것은 나중에 다루겠다.

 

 

3. 테스트 코드 작성

스프링의 장점이 테스트 환경과 기능을 제공해 주는 것이다.

이번 프로젝트에서는 JUnit을 이용하여 단위 테스트 하는 방법을 사용하겠습니다.

위의 이미지에 있는 자바 파일에 다음과 같은 코드를 작성합니다.

package com.jaepl.site;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.apache.ibatis.session.SqlSessionFactory;

@SpringBootTest
class JaeplApplicationTests {

	@Autowired
	private ApplicationContext context;

	@Autowired
	private SqlSessionFactory sessionFactory;

	@Test
	void contextLoads() {
	}

	@Test
	public void testByApplicationContext() {
		try {
			System.out.println("=========================");
			System.out.println(context.getBean("sqlSessionFactory"));
			System.out.println("=========================");

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Test
	public void testBySqlSessionFactory() {
		try {
			System.out.println("=========================");
			System.out.println(sessionFactory.toString());
			System.out.println("=========================");

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

다음과 같이 test 자바 파일에서 메서드를 클릭하여 RunAs->JUnit Test로 단위테스트를 진행할 수 있다.

 


 

이제 MySQL 연결이 완료되었다.

다음에는 CRUD 구현을 진행하겠다.

 


참고한 블로그입니다. 더 자세한 설명을 아래 블로그에서 보실 수 있습니다:)

https://congsong.tistory.com/14?category=749196#recentComments 

 

스프링 부트(Spring Boot) 게시판 - MySQL(HikariCP) 연동하기 [개발을 시작해봐요!]

이전 글에서는 스프링 부트의 프로젝트 구조와 필수적인 파일, MVC 패턴에 대해 알아보았습니다. 이번에는 스프링 부트와 MySQL 데이터베이스를 연동하는 시간을 가져보도록 할 건데요. MySQL 데이

congsong.tistory.com