새소식

반응형
Java/Spring

Spring Boot 게시판 만들기-3(DataBase 연결, MariaDB, application.properties 이용) 방법 1

  • -
반응형

1. DataBase 연결을 위한 pom.xml(Project Object Model)에 dependency 추가

* pom.xml에 dependency를 추가하기 전에 JDBC와 MyBatis를 확인한다.

* JDBC

: JDBC(Java DataBase Connectivity)란 자바에서 DB 프로그래밍을 위해 사용되는 API

: DB와 관련된 일을 처리하며, DB 종류에는 상관없다.

필요 구성요소

- JDBC Driver

: DBMS와 통신을 담당하는 자바 클래스

: 각 DB에 맞는 드라이버가 필요하다.

- JDBC URL

: DBMS와 연결을 위한 식별자

: DBMS 드라이버 마다 식별자가 다르다.

: 구성- jdbc:[DMBC]:데이터베이스 식별자

ex) MySQL : jdbc:mysql://ip:port/DataBase명

- DB UserName, Password 등

* MyBatis

: 객체지향언어인 자바의 관계형 데이터베이스 프로그래밍을 보다 쉽게 도와주는 프레임워크

: JDBC보다 더 편리하게 데이터베이스 프로그래밍을 할수 있다.

- 특징

1. SQL문이 코드로부터 완전히 분리 : 기존에는 DAO파일에 모든 SQL문을 작성하였지만,

MyBatis는 Mapper 파일에 SQL문을 적어놓고 필요할때마다 DAO 파일에서 가져와서 사용

2. 생산성 : 코드가 짧다

3. 유지보수성 향상 : 프로그램 코드와 SQL문의 분리로 인한 코드의 간결성 및 유지보수성 향상

- 본론으로 들어가 이제 dependency를 추가하자

<!--JDBC(Java DataBase Connectivity) -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-jdbc</artifactId>

<version>1.4.1.RELEASE</version>

</dependency>

<!-- MySQL -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.6</version>

</dependency>

<!--MyBatis -->

<dependency>

<groupId>org.mybatis.spring.boot</groupId>

<artifactId>mybatis-spring-boot-starter</artifactId>

<version>1.1.1</version>

</dependency>

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>1.3.0</version>

</dependency>

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.4.2</version>

</dependency>

dependendcy를 추가하고 라이브러리들을 update 하기 위해 Maven > Update Project 적용

2. DB 연결정보 설정을 위한 application.properties 설정 정보 추가

- src/main/resources > application.properties 설정 정보 추가

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/DataBase 명

spring.datasource.username=유저명

spring.datasource.password=패스워드

3. DB연결 및 SQL문을 실행하기 위한 메인함수에 설정 추가

- src/main/java > 프로젝트명Application.java 라는 폴더가 있을것이다.

Main 함수 안에 내용을 추가한다.

@Bean

public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception{

SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();

sessionFactory.setDataSource(dataSource);

return sessionFactory.getObject();

}

실제로 MyBatis에서 SQL문을 실행하는 SqlSession 객체가 필요하다. 이러한 SqlSession 객체를 생성하기 위해 Main 함수에 구문을 추가한것이다.

 

* @Bean@Component 어노테이션

: @Bean 과 @component 어노테이션 둘다 Spring(IOC) Container에게 Bean으로

등록하도록 하는 어노테이션이다.

하지만 둘의 차이점이 있다.

@Bean : 개발자가 직접 제어 불가능한 외부 라이브러리등을 Bean으로 생성할때 사용하는 어노테이션

@Component : 개발자가 직접 작성한 class를 Bean으로 등록하기 위한 어노테이션

* SqlSession, SqlSessionFactory, SqlSessionFactoryBuilder, SqlSessionFactoryBean, DataSource

SqlSession : 실질적인 SQL문을 실행, 트랜잭션 제어

SqlSessionFactory : SqlSesstion 객체를 생성하기 위한 구성요소

SqlSessionFactoryBuilder : MyBatis의 구성파일을 읽어 SqlSessionFactory를 생성하는 Builder

SqlSessionFactoryBean : MyBatis 구성파일을 생성하지 않고 SqlSessionFactoryBuilder가

SqlSessionFactoy를 생성할수 있게 도와준다.

 

 

3. 요청을 받는 Controller, 비즈니스 로직을 처리하는 Service, SQL문을 가지고 있는 Mapper 추가

- Controller.java

@Controller

public class SpringTestController {

@Autowired

SpringTestService ss;

@RequestMapping(value="/test")

public String springTestController(Model model) {

model.addAttribute("count", ss.springTestCountService());

return "test";

}

}

Model을 사용하여 view에서 보여질 데이터를 model 객체에 담는다.

- Service.java

@Service

public class SpringTestService {

@Autowired

SpringTestMapper sm;

public int springTestCountService() {

return sm.test();

}

}

- Mapper.interface

public interface SpringTestMapper {

final String TEST="SELECT count(*) FROM app_target";

@Select(TEST)

int test();

}

어노테이션만으로 쿼리를 실행 시킬수 있는 기능인 @Select 어노테이션이다.

간단하게 DB에 접근 할수 있고 동적쿼리가 아니라면 @Select 어노테이션을 사용하면 좋다.

@Select 어노테이션 말고도 @Insert, @Update, @Delete가 있다.

4. 화면을 보여주는 view인 jsp 파일 추가

- Controller에서 추가한 model 객체의 attributeName과 같은 이름으로 jsp에 추가한다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"

pageEncoding="EUC-KR"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="EUC-KR">

<title>Insert title here</title>

</head>

<body>

화면테스트입니다.

count : ${count}

</body>

</html>

5. Spring Boot 실행 후 화면 확인!

완료!

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.