티스토리 뷰

안녕하세요. MIN-IT입니다.


이번시간은 스프링 프로젝트와 DB(Mysql)을 연결하는 시간을 가지겠습니다.

 

퍼가실 때 댓글을 남겨주시면 감사하겠습니다.

 

http://min-it.tistory.com

 

 

안녕하세요. 오늘은 저번에 만든 스프링 프로젝트와 데이터베이스를 연결해보는

 시간을 갖겠습니다.


실습을 하기전에 저희는 목표는 프로젝트와 DB를 연결하는 것입니다. 즉, DB와 프로젝트를 연결시켜주는 무언가가 필요합니다. JAVA를 공부하셨더라면 라이브러리라는 것이 생각 날 것입니다. 저희는 라이브러리를 추가를 해야합니다. Spring에서 라이브러리를 추가하고 싶은 경우에는 바로 pom.xml를 사용하는 것입니다.



*pom.xml 설정 파일의 대표적인 역할

 

1.프로젝트 관계 설정  ==> 모듈/상속/의존 라이브러리 관리등..

2.빌드 설정              ==> 소스 디렉토리 / 리소스 디렉토리 / 플러그인 등..

3.프로젝트 기본 정보  ==> 프로젝트 이름 / 프로젝트 URL / 라이센스 등..

4.빌드 환경              ==> 빌드할 환경 정보 / 프로파일

 


 

 

 

<pom.xml의 일부>

 

<project>

-pom.xml의 최상위 속성(엘리먼트)

 

<modelVersion>

-pom.xml의 버전입니다

 

<groupId> 

-프로젝트의 고유아이디 

(프로젝트 생성시 패키지이름(org.abc.web)이 들어간 것이라 생각하면됩니다.

일반적으로 groupId는 도메인 이름을 사용합니다.)

 

<artfatId>

-프로젝트를 식별하는 아이디(유일)

(프로젝트 생성시 패키지이름(org.abc.web)이 들어 간 것이라 생각하면 됩니다.)

version :  프로젝트의 현재 버전

 

<name>

-프로젝트명

 

<dependencies>

-<dependency>를 이용하여 프로젝트와의 라이브러리의 의존 관계를 설정합니다.

의존관계를 설정한 후 저장하면 자동으로 라이브러리를 다운받아집니다.

프로젝트- 하위폴더 Maven Dependecies  OR  사용자폴더명-.m2폴더에서 확인이 가능합니다.

 

 

 

 

따라서 저희가 DB를 연결시켜 줄 수 있는 라이브러리를 일일이 다운 받을 필요없이 pom.xml의 dependencies 와 dependency 를 활용하여 명시를 해주면 연결이 됩니다.

 

 

 

 

 

 

*스프링 프로젝트와 mysql (DB) 연결 실습해보기

 

 

1. http://mvnrepository.com/artifact/mysql/mysql-connector-java에 접속을 합니다.

 

 

 

 

버전들 별로 라이브러리를 다운 받을 수 있습니다. 저는 비교적 Usages가 많은 5.1.39 버전을 다운로드 하겠습니다.

 

http://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.39

 

 

 

 

2.<dependency>부분을 복사하여 pom.xml의 <dependencies>안에 붙여넣어줍니다.

 

 

 

 

 

여기서 주의 하실점은 

<dependencies>안에다 복사한 <dependeny>를 넣어야합니다. </dependencies>

 

넣고나서 저장을 하면 자동으로 다운로드를 시작하게 되고

 

 

 

프로젝트-하위폴더 maven Dependency안에 mysql이 생성됩니다.

 

 

mysql이 정상적으로 연결이 이루어지는 테스트를 해보겠습니다.

테스트의 앞서 자바 버전을 확인 합니다.

 

pom.xml - <properties> - java-vesion

(찾기 어려우시다면 컨트롤+F를 통하여 properties를 검색해서 찾으세요^^)

 

 

만약 java-version이 1.7보다 낮다면 1.7이상으로 변경한 후 저장하세요.

 

 

 

*왜 java-version을 1.7이상 높이는 이유는 뭘까요??

 

-문득 1.7이상으로 버전으로 변경하는 것이 궁금하신 분들이 계실겁니다.

 자바를 이용할때 IO/네트워크 연결 /DB연결 등을 구현할때 반드시 try-catch-finally을 이용하여 명시적으로 연결을 종료해야했습니다.

 

하지만 JDK 1.7버전 이후부터는 try-width를 사용하여 finally부분 없이 자동으로 close()를 호출되게 할 수 있어 1.7버전이상 사용하시게되면 코드의 양이 줄어듭니다.

(주의 하실점은 try (AutoClosable 인터페이스를 구현한 객체) 여야하는 것을 염두해두고 작업을 하시면 됩니다.

 

 

 

 

JDBC연결 테스트를 하기전에

workbench를 이용하며 스키마를 생성하겠습니다.

-sys오른쪽마우스 - Create Schema - Name입력 - collation(utf-8로 지정) - apply

 

 

워크벤치 접속이 기억이 안나신다면 http://min-it.tistory.com/1 를 참고해주세용

 

 

1. 스키마 생성

 

 

2.test case파일 생성

 

-프로젝트 -하위폴더 src/test/java - org.hello.web(만드신패키지명) - 오른쪽 마우스-

new - Junit Test Case

 

 

 

 

 

3.name 지정 - finish

 

 

 

import java.sql.Connection;
import java.sql.DriverManager;

import org.junit.Test;

 

public class mysqlTest {

 private static final String DRIVER = "com.mysql.jdbc.Driver";
 private static final String URL = "jdbc:mysql://127.0.0.1:3306/test1"; // jdbc:mysql://127.0.0.1:3306/여러분이 만드신 스키마이름
 private static final String USER = "root"; //DB 사용자명
 private static final String PW = "1234";   //DB 사용자 비밀번호
 
 @Test
 public void testConnection() throws Exception{
  Class.forName(DRIVER);
  
  try(Connection con = DriverManager.getConnection(URL, USER, PW)){
   System.out.println("성공");
   System.out.println(con);
  }catch (Exception e) {
   System.out.println("에러발생");
   e.printStackTrace();
  }
 }

}

 

이 부분을 만드신 파일안에 복사 -붙여넣기

 

 

 

 

-여러분이 수정해야 할 곳은

1.package 경로가 자신에 맞게

(패키지 경로 잘모르시면 class파일 및 Junit test case 파일 생성하고 거기있는 package 복사해서 붙여넣으세용)

 

2.jdbc:mysql://127.0.0.1:3306/test1 (test1부분은 자신의 스키마명으로)

(127.0.0.1:3306 ==로컬 호스트 고유번호로 수정안하셔도되요)

(만약 예전에 mysql 설치시 next버튼을 마구 누르셨다면 상관 없습니다만

(포트 번호를 3306이 아닌 다른번호로 바꾸셨다면 바꾸신 포트번호를 적으세요)

 

 

3.USER / PW : mysql의  ID와 비밀번호를 입력하세요

 

 

 

 

4. 테스트 실행해보기

 

테스트파일 오른쪽마우스 - Run As - JUnit Test

 

 

 

 

성공시 초록색 바와 함께 콘솔 창에 DB연결된 정보가 나온다면

정상적으로 mysql 연결 되신겁니다.

 

 

 

 

 

 *DB연결할때 mysql 관련 <dependency>를 복사하여 pom.xml에 저장해서 라이브러리를 다운로드 했는데 테스트를 할때 Junit을 사용했는데 Junit관련 라이브러리를 다운로드 하지않아도 테스트가 가능했을까???

 

-Spring 프로젝트를 생성시 JUnit 설정이 완료된상태로 프로젝트가 생성되기 때문입니다. (프레임워크이기 때문에 테스트에 관련된 뼈대나 근간이 이미 만들어져있습니다.)

 

 

실제로 pom.xml에서 Junit관련된 <dependency>가 있는 것을 확인 할 수 있습니다.

(dependency에 Junit이 있으니 프로젝트 생성하자마자

Junit관련 라이브러리를 다운 받았겟죠!?)

 

 (pom.xml에서 컨트롤+f를 통해 Junit을 검색해보세요)

 

 

 

 

 

* 포스팅을 마치겠습니다.

궁금하거나 잘못된 부분이있다면 알려주시면 감사하겠습니다.*



 

댓글