Developer/JAVA

JAVA , JAVA와 데이터베이스 연동을 통한 데이터 처리

단님 2024. 10. 30. 12:34
728x90
Frontend 와 Backend 간의 데이터 전송
  • 프론트앤드에서 사용자가 입력한 데이터를 서버로 전송하고 
    최종적으로 해당 데이터를 SQL문을 통해 데이터베이스에 저장
  • 이과정에서 JAVA 는 SQL 문을 통해 DB와 상호 작용하는 중간 역할을 수행한다.

Java 와 DB 연결을 위한 JDBC 사용
  • JDBC(Java Database Connectivity)

java 애플리 캐이션이 다양한 데이터베이스에 연결될 수 있도록 해주는 API

자바 운영체제에 JVM이 있던것 처럼,

DB에 관해서도 각 DBMS 마다 존재하게 된다 ➡️JDBC Driver API

  • JDBC Driver

각 DB 회사마다 드라이버를 제공하고 있다.

mySQL은 커넥터를 이용하여 JDBC 드라이버 API를 사용한다.

드라이버들도 공통된 규칙이 정해져 있고 , 그 규칙이 JDBC driver 다. 자바를 설치하면 기본적으로 있다.

규칙을 준수하도록 인터페이스 형태의 라이브러리가 있다.


MySQL 과 Java 연동
1. JDBC 드라이버 설치

MySQL을 Java와 연결하기 위해 JDBC 드라이버인 mysql-connector-java를 설치하고 프로젝트에 추가.

https://downloads.mysql.com/archives/c-j/

 

MySQL :: Download MySQL Connector/J (Archived Versions)

Please note that these are old versions. New releases will have recent bug fixes and features! To download the latest release of MySQL Connector/J, please visit MySQL Downloads. MySQL open source software is provided under the GPL License.

downloads.mysql.com

압축을 미리 풀어서 편하게 꺼내 놓는다.

 

DB 연결을 위한 Connection 객체 생성

클래스 내에서 선언해보기

import java.sql.Connection;

 

Statement와 ResultSet 활용

DB와의 연결 이후 SQL 쿼리를 실행하기 위해 Statement 객체 사용,
쿼리 결과는 ResultSet으로 저장.

st = cn.createStatement();: 데이터베이스 연결에서 Statement 객체를 생성.
rs = st.executeQuery(sql);: SQL 쿼리를 실행하고 결과를 ResultSet에 저장.

Statement , PreparedStatement , ResultSet  보기

 

Java에서의 SQL 데이터 처리: Statement, PreparedStatement ,ResultSet

Statement와 PreparedStatement 비교  Statement와 PreparedStatement 클래스는 Java 애플리케이션에서 데이터베이스에 접근하여 SQL 쿼리를 작성하고 DB에 전달할 때 쓰는 클래스들로 다른 특성을 가지고 있다. S

radaonmommy.tistory.com

 

 

DBConnection 을 이용하기 위한 클래스 만들기 , jar와의 연동

1.메인은 없는 클래스 생성

 

2. Connection 객체 생성

DB 연결

Connection 객체가 DB 연결및 연결정보를 관리한다.

즉, Connection 객체를 생성해야함

 

* Connection 생성과정 

Class.forName : JDBC 드라이버 로딩

DriverManager Class: getConnection() 메서드로 해당 JDBC 드라이버를 찾아 필요한 기본값으로 컨넥션을 생성해서 제공

String url = "jdbc:mysql://@127.0.0.1:3306/mydb?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true" ;
DriverManager.getConnection(url, "root", "password") ;//url,user,password
127.0.0.1는 서버 위치 , localhost 라고 입력해도 가능함.
포트번호를 mysql에서 사용한 번호.
mydb :데이터베이스 위치
?~: DB 에 전달하는 파라미터. 자바를 통해 DB에 접근할때 쓰는 옵션들 .
allowPublicKeyRetrieval : 로컬에서 mySQL을 오픈해놓고 쓰는지 아닌지 확인하는 옵션.

 

3. 커넥션 제공 메서드 만들기

try {
	Class.forName("com.mysql.cj.jdbc.Driver");
	String url = "jdbc:mysql://@127.0.0.1:3306/mydb?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true";
	Connection cn = DriverManager.getConnection(url, "root", "mysql") ;//url,user,password
	System.out.println("JDBC connection 성공"); 
	return cn;
} catch (Exception e) {
	System.out.println("JDBC connection Exception "+ e.toString()); // 오류발생
	return null;
}

 


DB 테이블 조회해보자
테이블 전체 조회
static Connection cn = DBConnection.getConection();
static Statement st;
static ResultSet rs;
static String sql;

public static void selectList() {
    sql = "select * from student";
    try {
        st = cn.createStatement();
        rs = st.executeQuery(sql);
        if(rs.next()) {
            do {
                System.out.print(rs.getInt(1) + " ");
                System.out.print(rs.getString("name") + " ");
                // 필요한 모든 열 출력
            } while (rs.next());
        }
    } catch (Exception e) {
        System.out.println("selectList Exception " + e.toString());
    }
}

 

파라미터를 통한 데이터 조회
static Connection cn = DBConnection.getConection();
static Statement st;
static ResultSet rs;
static String sql;

public static void joList(int jno) {
    sql = "select * from student where jno= " + jno;
    try {
        st = cn.createStatement();
        rs = st.executeQuery(sql);
        if(rs.next()) {
            do {
                System.out.print(rs.getInt(1) + " ");
                System.out.print(rs.getString("name") + " ");
            } while (rs.next());
        } else {
            System.out.println("데이터 없음");
        }
    } catch (Exception e) {
        System.out.println("joList Exception " + e.toString());
    }
}

 


jar 파일 연결 확인
//Connection cn = DBConnection.getConection(); // noneStatic으로 메인 메서드에서 인스턴스 생성 없이는 못쓰게 됨
	static Connection cn = DBConnection.getConection();
	
		public static void main(String[] args) {
		// connection 확인하기
		System.out.println("DB연결 확인해보기 : "+cn);

 

 

→ jar 파일에 연결해 주지 않았기 때문에 Exception 발생.

 

프로젝트 위에서 우클릭

세팅 한 후, 확인해보면


Java와 MySQL 연동을 위한 준비 사항 요약
1.JAR 파일 추가: mysql-connector-java JAR 파일을 프로젝트에 추가해야 JDBC 드라이버를 사용할 수 있음.
2.JDBC드라이버 로딩: Class.forName("com.mysql.cj.jdbc.Driver")을 통해 JDBC 드라이버 로드.
3.정상 연결 확인: DB 연결이 정상적으로 이루어졌는지 확인하기 위해 로그 및 예외 처리 구문 포함.