본문 바로가기
프로젝트/selfmade Blog - V1 (deprecated)

2. JDBC를 이용한 DB 설정

by zangsu_ 2023. 8. 11.

DB 생성

우선 블로그에서 사용할 DB를 먼저 만들어 두자.
DB의 이름은 selemadeBlog이다.

create database selfmadeBlog;

 

Java 프로젝트와 연동

외부 라이브러리 추가

우선 JDBC를 사용하기 위해 connector-j를 추가해 주어야 한다.
ctrl + alt + shift + s로 program structure를 연 후 Project Settings > Library 에 들어간다.
추가 버튼을 누른 후 MySQL이 설치된 폴더에서 connector-j의 jar 파일을 추가해 준다.

 

연결 확인

연결 확인은 View > tool windows > database에서 확인할 수 있다.

 

JDBC 코드 작성

제대로 데이터베이스를 사용할 수 있는지, 간단한 모델을 생성하고 저장하는 로직을 만들어 테스트 해보자.

임시로 사용자 클래스 User를 생성 후 UserDAO 클래스로 User를 저장 해보자.

 

user 클래스

@Data
public class User {

    int idx;
    String id;
    String password;

    public User(String id, String password) {
        this.id = id;
        this.password = password;
    }
}

idx 값은 DB에서 auto_increment로 생성해 줄 값을 사용할 것이기 때문에 생성자에서 업데이트를 해 주지 않는다.

 

User 테이블

같은 형식으로 DB에서도 User 테이블을 생성하자.

create table users(
	idx int auto_increment primary key,
    id char(20) not null,
    password char(20) not null
);

 

UserDAO

이제  DB에 User를 저장하기 위한 UserDAO를 만들어 사용해 보자.

@Repository
public class UserDAO {

	//DB connection을 받아오기 위해 사용할 값

    public void save(User user){
        try(Connection conn = DriverManager.getConnection(url, userName, password)) {
            PreparedStatement ps = conn.prepareStatement(
            	"insert into users (id, password) VALUES (?, ?)");
            ps.setString(1, user.getId());
            ps.setString(2, user.getPassword());

            ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}

 

오류 발생!

오류가 발생헀다!!!

 

오류를 간단하게 확인해 보면 다음과 같다.

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/selfmadeblog
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:706)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
	at com.example.selfmadeBlog.DAO.UserDAO.save(UserDAO.java:29)
	at com.example.selfmadeBlog.DAO.userDAOTest.saveTest(userDAOTest.java:18)
    //...
    at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)

즉, mysql 서버에 접근하기 위한 적합한 드라이버를 찾을 수없다는 말이다.

webapp > WEB-INF > lib 경로에 connector-j의 jar 파일을 넣어보기도 하고, 온갖 방법을 써 봐도 잘 해결되지 않았다.

 

여기서 엄청 오랜 시간 헤맸다...

 

해결

방법은 간단했다.

외부 라이브러리에 mysql:mysql-connector-java:8.0.33가 포함되어 있으면 되는 것이였다.

그리고, 나는 gradle로 의존성을 관리하고 있었기 떄문에 connector-java 의존성을 추가해 주면 되는 문제였다.

 

build.gradle에 다음을 추가해 주자.

implementation('mysql:mysql-connector-java:8.0.33')

 

테스트가 성공하는 것을 확인할 수 있다!!

댓글