ProgrammingLang/JSP

[JSP] 7. Maven에서 JDBC를 이용한 DB연결 방법

jinkwon.kim 2018. 8. 12. 02:46
728x90
반응형

[JSP] 7. Maven에서 JDBC를 이용한 DB연결 방법



JSP 정리 목록

이전 글([JSP] 6. Maven 이란?)


1. 사전 설정 사항. 

  1) DBMS설치(Mysql-8.0.12)

  2) Maven 프로젝트에서 pom.xml 에 mysql dependency 추가

    <dependency>   

  <groupId>mysql</groupId>   

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

    <version>5.1.45</version>

    </dependency>


2. JDBC를 이용한 프로그래밍 절차

  1. DBMS에 맞게 Driver를 로드.

  2. java SQL 패키지의 DriverMager를 통해서 DBMS에 연결

  3. Sql 쿼리 String 생성

  4. DB에 Sql 쿼리 전달 하기 위한 객체 생성

  5.쿼리 실행 및 결과 얻기

  - 비유를 통한 프로그램 절차 이해하기 

    -> JDBC를 통한 DB제어는 강건너 사람에게 명령하는 것과 같다. 


  1. DBMS에 맞게 Driver를 로드.

    - 어떤것인 지나갈 다리를 만들 것인가??(기차인가? 차동차인가?, DBMS의 종류에 비유 할수 있다.)

    - 자동차가 지난간다고 예를들어설명 한겠다.

  2. java SQL 패키지의 DriverMager를 통해서 DBMS에 연결

    - 자동차가 지나갈 다리를 만든다. 

  3. Sql 쿼리 String 생성

    - 다리 건너편에 있는 사람에게 어떤 명령을 전달할지 적는다..

  4. DB에 Sql 쿼리 전달 하기 위한 객체 생성

    - 명령을 전달할 자동차를 만든다.

  5.쿼리 실행 및 결과 얻기

    - 자동차를 보낸다. 

    - 자동차 운전수가 전달한 명령에 대한 응답 결과를 알아낸다.


3. TEST 코드(JDBC를 통한 접속부터 결과 얻기 까지)

package kr.co.jkcenter.jdbctest.dao;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;



import kr.co.jkcenter.jdbctest.dto.Role;


public class RoleDao {

private static String dburl = "jdbc:mysql://localhost:3306/connectdb";

private static String dbUser = "connectuser";

private static String dbpasswd = "connect123!@#";


public Role getRole(Integer role_id) {

Role role = null;

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

try {

// 1. DBMS에 맞게 Driver를 로드.

Class.forName("com.mysql.jdbc.Driver");


// 2. java SQL 패키지의 DriverMager를 통해서 DBMS에 연결

conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);


// 3.Sql 쿼리 String 생성

String query = "SELECT description,role_id FROM role WHERE role_id = ?";


// 4.DB에 Sql 쿼리 전달 하기 위한 객체 생성

ps = conn.prepareStatement(query);

//   3에서 ?에 대한 설정   , 1번째 ?로 에 값을 설정

ps.setInt(1, role_id);


// 5. 쿼리 실행 및 결과 얻기

rs = ps.executeQuery();

// 결과 값 빼내기 nex()함수의 결과 첫번재 컬럼을 빼난다.

if (rs.next()) {

// index로 뽄는 방법

String description = rs.getString(1);

// Column명으로 뽑

int id = rs.getInt("role_id");

role = new Role(description, id);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if (rs != null) {

try {

rs.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if (ps != null) {

try {

ps.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if (conn != null) {

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

return role;

}

}


4. 발생 할 수 있는 에러정보


  1). Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.

  - 해결 책 : 연결 주소를 다음과 같이 변경

"jdbc:mysql://localhost:3306/connectdb?verifyServerCertificate=false&useSSL=true";


  2). java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.

    - mysql에서 설정이 필요한다. 

  ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';

  Ex) ALTER USER 'chun4foryou'@'localhost' IDENTIFIED WITH mysql_native_password BY '1111111!@!@#';



JSP 정리 목록

이전 글([JSP] 6. Maven 이란?)

728x90
반응형

'ProgrammingLang > JSP' 카테고리의 다른 글

[JSP] 6. Maven 이란?  (0) 2018.08.09
[JSP] 5. EL(Expression Language) 과 JSTL(JSP Standard Tag Library)  (0) 2018.07.24
[JSP] 4. jsp의 scope 정리  (0) 2018.06.24
[JSP] 3. redirect 와 forward  (0) 2018.06.24
[JSP] 2. jsp 기본 문법  (0) 2018.06.23