- MySQL이 이미 설치되어 있다는 가정 하에 진행합니다.
-> 커넥션을 생성합니다.
-> 스키마를 생성합니다.
-> aQueryTool을 사용하여 데이터 모델을 만들고, SQL로 DDL을 export 합니다. DDL을 이용해 테이블로 생성합니다.
- GUI 툴인 Data Grip이 설치되어 있다는 가정 하에, Data Grip에서 진행합니다.
스프링 부트에서 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=데이터베이스 비밀번호
생성된 기본 패키지 아래 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문이 작성된 파일의 경로에 대한 것이다. 자세한 것은 나중에 다루겠다.
스프링의 장점이 테스트 환경과 기능을 제공해 주는 것이다.
이번 프로젝트에서는 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