DataBase와 Java를 직접 연동 실습

 

목적 : 이후 백엔드 서버에서의 DB연동에 활용 목적

 

실습 환경

DB : MySQL

IDE : IntelliJ Ultimate

Language : Java 17

Git Repository : https://github.com/pillow12360/login_example


목차

 

1. MySQL 8.0.33 설치 및 데이터 베이스 생성  name : user_management

2. JDBC 연동 및 설정 ( gradle )

3. 로그인 패키지 구현

4. 메인 메소드 테스트 및 확인

 


 

1. MySQL 설치

https://velog.io/@bi-sz/MySQL-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

 

MySQL 설치하기

MySQL 설치하기

velog.io

 

user_management 데이터 베이스를 구축하였다.

 

 

Table : users

 

자바에서 활용할 DB의 주소

 

db 주소 : jdbc:mysql://localhost:3306/?user=root/user_management

 

id : root

pw : 0000


 

테이블 구성

 

 

이후 로그인 패키지를 구현하였다.


DB 연동을 위한 connector-j 설치

build.gradle

 gradle에 추가하는 것으로 간단하게 설치 진행하였다.

 

 

User 클래스

package org.example.usermanagement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class User {
private String id;
private String email;
private String password;

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}


public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

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

// User 객체를 DB에 저장하는 메서드
public void saveToDB() {
String url = "jdbc:mysql://localhost/user_management";
String username = "root";
String password1 = "0000";

try (Connection conn = DriverManager.getConnection(url, username, password1)) {
String query = "INSERT INTO users (id, password, email) VALUES (?, ?, ?)";
PreparedStatement statement = conn.prepareStatement(query);
statement.setString(1, id);
statement.setString(2, password);
statement.setString(3, email);
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}

// ID를 기준으로 DB에서 User 객체를 조회하는 메서드
public static User loadFromDB(int id) {
User user = null;

String url = "jdbc:mysql://localhost/user_management";
String username = "root";
String password = "0000";

try (Connection conn = DriverManager.getConnection(url, username, password)) {
String query = "SELECT id, password, email FROM users WHERE id = ?";
PreparedStatement statement = conn.prepareStatement(query);
statement.setInt(1, id);
ResultSet resultSet = statement.executeQuery();

if (resultSet.next()) {
String userId = resultSet.getString("id");
String userPassword = resultSet.getString("password");
String userEmail = resultSet.getString("email");
user = new User(userId, userPassword, userEmail);
}
} catch (SQLException e) {
e.printStackTrace();
}

return user;
}
}

 

UserManager 클래스

package org.example.usermanagement;

import java.sql.*;

public class UserManager {
private Connection connection;

public UserManager() {
try {
// 데이터베이스 연결
connection = DriverManager.getConnection("jdbc:mysql://localhost/user_management", "username", "password");
} catch (SQLException e) {
e.printStackTrace();
}
}

public boolean registerUser(User user) {
try {
// 회원 정보 유효성 검사
if (isUserExists(user.getId())) {
System.out.println("이미 존재하는 아이디입니다.");
return false;
}

// 회원 가입 처리
String sql = "INSERT INTO users (id, password, email) VALUES (?, ?, ?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, user.getId());
statement.setString(2, user.getPassword());
statement.setString(3, user.getEmail());
statement.executeUpdate();

System.out.println("회원 가입이 완료되었습니다.");
return true;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}

public boolean loginUser(String id, String password) {
try {
// 아이디와 비밀번호 검증
String sql = "SELECT * FROM users WHERE id = ? AND password = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, id);
statement.setString(2, password);
ResultSet resultSet = statement.executeQuery();

if (resultSet.next()) {
System.out.println("로그인 성공");
return true;
}

System.out.println("아이디 또는 비밀번호가 일치하지 않습니다.");
return false;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}

public void logoutUser() {
// 로그아웃 처리
System.out.println("로그아웃 되었습니다.");
}

private boolean isUserExists(String id) {
try {
// 아이디 중복 검사
String sql = "SELECT COUNT(*) FROM users WHERE id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, id);
ResultSet resultSet = statement.executeQuery();

if (resultSet.next()) {
int count = resultSet.getInt(1);
return count > 0;
}
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
}

 

 

Main 메서드 : 테스트 작성


 

테스트 실행

 

케이스 1

id : test3

password : 45177

email : test@example.com 

 

결과

 

콘솔

 

DB