꾸준하게 기록하기
article thumbnail

'[책] 스프링부트 시작하기 (김인우)'를 공부하면서 적은 내용입니다.

Spring Boot 프로젝트 생성

프로젝트 설정 

 

게시판을 만들기 위해 새롭게 프로젝트 생성을 하였다.

패키지 명을 board 로 지정했고 빌드 관리 도구를 Gradle 로 설정하였다.

프로젝트 생성
의존성 설정

프로젝트 생성 후 build.gradle을 열어보면 선택한 라이브러리들이 추가된 것을 확인 할 수 있다.

 

데이터베이스 연결하기

Spring Boot 프로젝트의 경우 데이터 소스를 처리하기 위해서 크게 2가지 방식 사용한다.

  1. application.properties를 이용해 설정
  2. @Bean 어노테이션을 이용해 설정

개발환경과 운영환경에서 다르게 적용될 수 있는 설정들은 application.properties 에 정의하는 것이 좋다.

 

1. 데이터 소스 설정하기

 

application.properties에 데이터 소스 설정하기

spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.jdbc-url=jdbc:mysql://127.0.0.1:3306/insight?useUnicode=true&characterEncoding=utf-8
spring.datasource.hikari.username=아이디
spring.datasource.hikari.password=비밀번호
spring.datasource.hikari.connection-test-query=SELECT 1

- spring.datasource.hikari.jdbc-url : 연결할 데이터 베이스의 주소를 설정

- 아이디, 비밀번호는 MySQL 설치할 때 사용한 아이디, 비밀번호 입력

- spring.datasource.hikari.connection-test-query : 데이터베이스와 정상적으로 연결되는지 확인하기 위한 테스트 쿼리

 

DatabaseConfiguration 클래스 만들기

scr/main/java/board 패키지 밑에 configuration 패키지 생성하고 DatabaseConfiguration 클래스 생성

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;

@Configuration
@PropertySource("classpath:/application.properties")    
public class DatabaseConfiguration {

    @Bean
    @ConfigurationProperties(prefix="spring.datasource.hikari")
    public HikariConfig hikariConfig(){
        return new HikariConfig();
    }
	
    
    // 하키리CP 의 설정 파일을 이용해서 데이터베이스와 연결하는 데이터 소스 생성
    @Bean
    public DataSource dataSource() throws Exception {
       
        DataSource dataSource = new HikariDataSource(hikariConfig());
        
        // 데이터 소스가 정상적으로 생상되었는지 확인
        System.out.println(dataSource.toString());
        return dataSource;
    }

}

@PropertySource("classpath:/application.properties")

: application.properties을 설정파일로 사용할 수 있도록 위치 지정

@PropertySource 어노테이션 추가해 다른 설정파일도 사용할 수 있다.

 

@ConfigurationProperties(prefix="spring.datasource.hikari")

- application.propertoes 에서 설정했던 데이터베이스 관련 정보를 사용할 수 있도록 지정

- @ConfigurationProperties 어노테이션에 prefix가 spring.datasource.hikari로 되어 있으므로

spring.datasource.hikari로 시작하는 설정을 이용해서 하키리CP 의 설정파일을 만듭니다.

 

2. MyBatis 연동하기

MyBatis는 쿼리 기반 웹 어플리케이션을 개발할 때 가장 많이 사용되는 SQL Mapper 프레임워크이다.

직접 JDBC 를 이용할 경우 개발자가 작성해야 할 코드가 늘어나고 서비스 로직 코드와 쿼리를 분하기 어렵다.

 

MyBatis 설정하기

package com.insight.board.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")    // application.propertoes를 사용할 수 있도록 설정파일 위치 지정
public class DatabaseConfiguration {

    @Autowired
    private ApplicationContext applicationContext;

    // application.propertoes 에서 설정했던 데이터베이스 관련 정보를 사용할 수 있도록 지정
    //  @ConfigurationProperties 어노테이션에 prefix 가  spring.datasource.hikari로 되어 있으므로
    // spring.datasource.hikari로 시작하는 설정을 이용해서 하키리CP 의 설정파일을 만듭니다.
    @Bean
    @ConfigurationProperties(prefix="spring.datasource.hikari")
    public HikariConfig hikariConfig() {
        return new HikariConfig();
    }

    // 하키리CP 의 설정 파일을 이용해서 데이터베이스와 연결하는 데이터 소스 생성
    @Bean
    public DataSource dataSource() throws Exception {
        DataSource dataSource = new HikariDataSource(hikariConfig());

        // 데이터 소스가 정상적으로 생상되었는지 확인
        System.out.println(dataSource.toString());
        return dataSource;
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:/mapper/**/sql-*.xml"));

        return sqlSessionFactoryBean.getObject();
    }

    @Bean
    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

- SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();

: spring-MyBatis 에서는 SqlSessionFactory를 생성하기 위해서 SqlSessionFactoryBean을 사용한다.

MyBatis를 단독으로 사용할 때는 SqlSessionFactoryBuilder 를 사용한다.

- sqlSessionFactoryBean.setDataSource(dataSource); → 앞서 만든 데이터 소스를 설정한다.

- .setMapperLocations(applicationContext.getResources("classpath:/mapper/**/sql-*.xml"));

MyBatis 의 Mapper 파일의 위치를 설정

→ classpath : resources 폴더를 의미

→ /mapper/**/ : mapper 폴더 밑의 모든 폴더를 위미

→ sql-*.xml : 이름이 sql 로 시작하고 확장자가 xml인 모든 파일 의미

 

Mapper 폴더 생성

: 쿼리를 담고 있는 xml 파일을 저장 (src/main/resources 폴더 밑에 mapper 폴더 생성)

 

 

 

 

728x90
profile

꾸준하게 기록하기

@:_:

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!