[JDBC/MySQL] 프레임워크 없이 JDBC 연결해보기

Dev.Hammy·2024년 3월 11일
0

Etc

목록 보기
15/20

// 사용환경 Ubuntu 22.04

로컬에 Java 설치

위 링크를 참고하여 로컬에 Java를 설치하고 JAVA_HOME 변수 설정 완료해주세요.

MySQL Server 설치

위 링크 참고하여 MySQL Server 설치 및 신규 아이디, 비번, 권한 설정을 완료하세요.

오라클은 우분투를 지원하지 않으므로 mysql로 jdbc 실습을 진행합니다.

Connector-J 설치

위 링크 참고하여 MySQL용 JDBC 드라이버인 Connector-J를 설치합니다.

dpkg --get-selections | grep -v deinstall | grep connector

위 명령어로 프로그램 설치 유무를 확인하고 위치를 파악합니다.

프레임워크 없이 자바 프로젝트 생성

JDBC 드라이버용 라이브러리 생성

lib이라는 새 디렉터리를 추가합니다.

위에서 파악해두었던 connector-j의 jar 파일을 복사하여 lib 디렉터리에 붙여넣기 합니다.

connector-j jar 파일이 들어있는 것이 보이지만 열어볼 수 없는 상태입니다.

File > ProjectStructure 선택

lib 디렉터리를 현재 프로젝트의 하위 모듈로 변환시킬 것이므로 Add > Import Module 선택

경로에서 불러올 디렉터리로 lib를 선택합니다.

Create 클릭

프로젝트의 하위 모듈인 lib이 생성되었습니다. 우측의 content root를 확인하면 lib이 추가되어 있는데 가운데 디렉터리를 열어보면 내용이 없습니다. lib 내부의 connector-j 를 사용하기 위해 content root를 추가합니다.

추가 완료하고 에디터로 돌아오면 내비게이션 바에서 모듈로 변환된 lib 내부에 mysql-connector-j가 열 수 있는 상태로 추가되어 있는 것을 확인할 수 있습니다.

MySQL WorkBench 설치 및 Connection 생성

워크벤치를 설치하고 처음 프로그램을 열면 기본적으로 root@localhost로 생성되어 있는 커넥션이 보입니다.

이 커넥션을 클릭하면 위와 같이 연결할 수 없다는 메시지가 나옵니다. 해당 커넥션을 삭제하고 신규 생성했던 user로 커넥션 생성을 시도합니다.

Test Connection 버튼을 클릭하면 비밀번호 입력 창이 뜹니다.

지정해둔 비밀번호를 입력하면 위와 같이 연결에 성공했다는 메시지를 확인할 수 있습니다.

생성된 커넥션을 클릭하여 워크벤치에 접속합니다.

JDBC에 사용할 스키마 만들기

프로젝트에 main함수를 가지고 있는 MyJDBC 라는 클래스를 하나 만들었습니다.

워크벤치 상단의 '스키마 추가' 아이콘을 클릭합니다.

적당한 이름을 기입하고 '적용' 버튼으로 스키마를 생성합니다.

그러면 이렇게 SQL문으로 스키마를 어떻게 생성했는지 보여주는 팝업이 뜨고 'Apply' 버튼을 누르면서 생성 과정을 진행합니다.

스키마 생성을 마무리하고 왼쪽 내비게이션 바에 '>' 모양의 이동 표시를 클릭합니다.

이곳에서 방금 생성했던 스키마를 확인할 수 있습니다.

생성한 스키마의 Tables를 마우스 우클릭 후 'Create Table'을 선택합니다.

테이블 생성 및 컬럼 추가

테이블 생성 진입 첫번째 화면

컬럼의 여러가지 제약사항 (primary key, not null 등등) 을 설정할 수 있습니다.

컬럼 명을 'id' 로 지으면 PK, NN 항목이 자동 체크 됩니다. 'id', 'firstname' 컬럼만 생성하기로 합니다.

적용 버튼을 누르면 스키마를 생성했을 때 처럼 SQL문을 보여줍니다.

테이블 생성이 완료되었습니다.

생성된 테이블 선택 후 마우스 우클릭 > Copy to Clipboard > Insert Statement 선택

가장 왼쪽 아이콘을 클릭하여 새로운 SQL 파일을 생성합니다.

아까 복사한 INSERT 문을 붙여넣기 합니다.

값을 기재하고 번개버튼을 눌러 실행합니다.

하단에서 출력 값과 실행 결과를 확인할 수 있습니다.

SELECT 문을 실행하여 결과를 확인해봅니다.

인텔리제이 내부에서 JDBC 연결해보기

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class MyJDBC {

    public static void main(String[] args) {

        try {
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:포트번호/스키마이름", "사용자이름", "비밀번호");

            Statement statement = connection.createStatement();

            ResultSet resultSet = statement.executeQuery("select * from people");

            while (resultSet.next()) {
                System.out.println(resultSet.getString("firstname"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

MyJDBC 클래스 코드를 위와 같이 수정합니다.

  1. Connection: Connection은 데이터베이스와의 연결을 나타내는 Java 인터페이스입니다. 이 인터페이스를 사용하여 데이터베이스에 접속하고, SQL 쿼리를 실행하며, 연결을 종료할 수 있습니다.

  2. Statement: Statement는 SQL 문을 실행하기 위한 객체입니다. Connection 객체로부터 생성되며, executeQuery(), executeUpdate(), execute() 등의 메서드를 통해 SQL 문을 실행할 수 있습니다.

  3. ResultSet: ResultSet은 SQL 쿼리의 결과를 나타내는 객체입니다. executeQuery() 메서드로부터 반환되며, 결과 집합의 각 행에 대한 데이터를 가져오거나 조회할 수 있습니다.

  4. try-catch 구문 사용 이유:

    • 데이터베이스와의 연결, SQL 쿼리 실행, 결과 처리 등의 작업은 예외가 발생할 수 있는 작업입니다. 예를 들어, 잘못된 데이터베이스 URL, 사용자 인증 실패, SQL 문법 오류 등이 발생할 수 있습니다.
    • 따라서 try-catch 구문을 사용하여 예외를 처리하여 프로그램이 비정상적으로 종료되지 않도록 합니다. 예외가 발생하면 해당 예외를 적절히 처리하고, 필요한 경우 오류 메시지를 출력하거나 로깅합니다.
    • 특히 JDBC와 같은 외부 리소스를 다룰 때는 예외 처리가 중요합니다. 연결된 리소스를 올바르게 해제하고, 메모리 누수를 방지하기 위해 try-catch-finally 구문을 사용하여 예외 처리와 리소스 정리를 보장합니다.

실행해봅시다!

에러가 나네여?

pom.xml 파일에 mysql 의존성 추가 후 실행

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>
    </dependencies>

빌드 툴로 Maven을 선택했었기 때문에 pom.xml에 mysql 관련 내용을 추가해줍니다.

추가 했던 데이터가 출력되는 것을 확인할 수 있었습니다.

클래스패스와 빌드패스

IntelliJ IDEA에서는 클래스패스와 빌드패스를 간단하게 찾고 관리할 수 있습니다. 다음은 IntelliJ IDEA에서 클래스패스와 빌드패스를 찾는 방법입니다:

  1. 프로젝트 구성 창을 사용하여 클래스패스 및 빌드패스 확인:

    • IntelliJ IDEA에서 프로젝트를 열고 왼쪽 탐색 창에서 프로젝트를 선택합니다.
    • 메뉴에서 "File" -> "Project Structure" 또는 단축키인 Ctrl + Shift + Alt + S를 사용하여 "Project Structure" 창을 엽니다.
    • "Project" 및 "Modules" 섹션에서 각 모듈의 "Dependencies" 탭을 확인하여 프로젝트의 클래스패스 및 빌드패스에 추가된 라이브러리와 종속성을 확인할 수 있습니다.
  2. Gradle 또는 Maven 프로젝트의 빌드 설정 확인:

    • Gradle 또는 Maven과 같은 빌드 도구를 사용하여 프로젝트를 관리하는 경우, 해당 빌드 스크립트를 확인하여 빌드패스 및 종속성을 확인할 수 있습니다.
    • 프로젝트 뷰에서 build.gradle 또는 pom.xml 파일을 찾아서 해당 파일을 열고, 라이브러리 종속성 및 빌드 설정을 확인할 수 있습니다.
  3. 프로젝트 설정 및 모듈 설정에서 확인:

    • "Project Structure" 창에서 "Project" 및 "Modules" 섹션의 "Sources" 및 "Libraries" 탭에서 프로젝트의 소스 파일 및 라이브러리 경로를 확인할 수 있습니다.

0개의 댓글