Old Branch

Spring Project 스프링 프로젝트 시작하기 - JDBC ,mysql,mybatis(1)

woolbro 2019. 7. 11. 11:30
반응형

[Java/Spring-framework] - Spring Project 스프링 프로젝트 시작하기 - Spring MVC 사용하기

 

Spring Project 스프링 프로젝트 시작하기 - Spring MVC 사용하기

이번 포스팅은, 이전의 MVC 모델을 설명했던 포스팅을 참고하고 발전시켜 보도록 하겠습니다. [Java/Spring-framework] - Spring Project 스프링 프로젝트 시작하기 - Spring MVC Spring Project 스프링 프로젝트..

woolbro.tistory.com

이번 포스팅은 위의 포스팅을 조금 수정해서 사용하려고 합니다. 처음 작성하신다면 위의 포스팅을 참고해주세요 :)

 

프로젝트 구조는 다음과 같습니다

 

Spring Boot 어플리케이션에  List객체에 데이터를 넣어 화면에 뿌려주는 역할까지 했었습니다. 이번 포스팅은 Service를 조금 수정하고  DAO를 수정해서 데이터베이스와 연동하여 사용하도록 하겠습니다.

 

또한 Database Table을 추가하고 데이터를 넣어 사용 하도록 하겠습니다.

 


Database 

JDBC를 사용하는 이유는 데이터베이스를 사용 하기 위함입니다. 테이블을 생성하고, 데이터를 넣어주도록 하겠습니다.

CREATE TABLE  `wooldev`.`T_NEWS` (

    `id` INT NOT NULL AUTO_INCREMENT,

    `title` VARCHAR(200NOT NULL,

    `contents` VARCHAR(2000NOT NULL,

    `date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,

    `author` VARCHAR(50NOT NULL,

    `type` VARCHAR(45NOT NULL,

PRIMARY KEY (`id`)

);

Colored by Color Scripter

cs

테이블을 생성했으니, 데이터를 넣어주도록 하겠습니다.

INSERT

    INTO

        `TAES_NEWS`.`T_NEWS` (`title`,

        `contents`,

        `date`,

        `author`,

        `type`)

    VALUES ('중고차 매매 후 한 달 내 고장나면 보험 보상받는다',

    '중고차 구입 소비자의 피해를 구제하기 위한 중고차 보험이 다음 달부터 의무화되면서 구입 한 달 이내의 중고차 고장은 보험으로 보장을 받을 수 있게 된다.',

    '2019-05-27 13:30',

    'Taes',

    'financial'),

    ('하늘 참 신기하네',

    '오전 대구 달서구청 옥상 정원에서 시민들이 하늘에 펼쳐진 이색적인 구름을 관찰하고 있다. 파란 하늘에서 잘라낸 듯 넓게 펼쳐진 구름대와 차고 습한 대기 속을 비행하는 항공기가 남기는 가늘고 긴 구름 ‘비행운(오른쪽 가늘고 긴 구름)’이 겹쳐지며 진기한 풍경을 연출하고 있다.',

    '2019-05-27 09:30',

    'Taes',

    'social'),

    ('커쇼 11연승, 다저스 4연승',

    '커쇼가 11연승에 성공했다. 벨린저는 19호 홈런과 함께 팀을 구해낸 두 개의 외야 어시스트를 기록했다. 오클랜드는 10연승을 질주.',

    '2019-05-27 11:35',

    'Taes','sports');

 

Colored by Color Scripter

 

 

Spring Dependency 추가

스프링에서는 데이터베이스와 연결을 위해서 별도의 API가 필요합니다. 그중 먼저, JDBC를 사용해서 연결을 해보도록 하겠습니다. JDBC(Java Database Connectivity)란 자바에서 데이터베이스에 접속할수 있도록 만든 자바 API로써 데이터베이스의 종류에따라 별도의 JDBC 드라이버로 연결하여 사용 가능합니다.

 

우선, Spring Boot 어플리케이션에서 데이터베이스를 사용하려면 Spring Boot Project의 pom.xml과 application.properties를 설정 해 주어야 합니다.

 

Spring Starter에서 추가를 해 주거나, Spring Edit 혹은 pom.xml을 수정 해 줍니다. 저는 mysql을 사용하도록 하겠습니다.

 

아래는 pom.xml입니다.

    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
    	<groupId>mysql</groupId>
    	<artifactId>mysql-connector-java</artifactId>
    	<scope>runtime</scope>
    </dependency>

 

그 이후에, 아래에 첨부되어있는 소스처럼, application.properties를 설정 해 줍니다.

#view setting
spring.mvc.view.prefix = /WEB-INF/jsp/
spring.mvc.view.suffix = .jsp

#datasource setting
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/wooldev?characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver

 

Service, DAO 수정

위의 링크 된 프로젝트에서는 작성하지 않았던 DAO를 작성해주도록 하겠습니다. DAO(Data Access Object)는 실제로 DB에 접근하는 객체로써 Service 레이어와 데이터베이스를 연결해주는 역할을 해주는 클래스입니다.

사전에 넣어둔 샘플 뉴스 데이터를 불러오기위해 DAO를 작성해보도록 하겠습니다. 이때 DAO는 Service를 작성한것과 마찬가지로 인터페이스와 구현체를 따로 나누어 작업하도록 하고, 데이터를 직접 넣어주었던 서비스 부분도 함께 수정하도록 하겠습니다.

 

 

NewsDao.java , NewsDaoImpl.java

package com.woolbro.dev.dao.Impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import com.woolbro.dev.dao.NewsDao;
import com.woolbro.dev.vo.News;

@Repository
public class NewsDaoImpl implements NewsDao {

	
	@Autowired
	private JdbcTemplate jdbcTemplate;
	
	@Override
	public List<News> getNews() {
		List mainNews = new ArrayList();
        String query = "select * from T_NEWS";
        return jdbcTemplate.query(query, new BeanPropertyRowMapper<News>(News.class));
	}
	
}
package com.woolbro.dev.dao;

import java.util.List;

import com.woolbro.dev.vo.News;

public interface NewsDao {
	
	public List<News> getNews();
	
}

 

ServiceImpl은 아래와 같습니다.

 

NewsServiceImpl.java

package com.woolbro.dev.service.Impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.woolbro.dev.dao.Impl.NewsDaoImpl;
import com.woolbro.dev.service.NewsService;
import com.woolbro.dev.vo.News;

@Service
public class NewsServiceImpl implements NewsService{

	@Autowired
	NewsDaoImpl newsDao;
	
	@Override
	public List<News> getNews() {
		List mainNews = new ArrayList<>();
		mainNews = newsDao.getNews();
        return mainNews;
	}
	
}

 



JDBC 실행 구조

 

 

 

실행

  

잘 만든 서비스를 이제 실행 해 보도록 하겠습니다!

 

데이터베이스에 넣어준 대로 잘 가져오는 모습을 볼 수 있습니다!!