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
user_management 데이터 베이스를 구축하였다.
Table : users
자바에서 활용할 DB의 주소
db 주소 : jdbc:mysql://localhost:3306/?user=root/user_management
id : root
pw : 0000
테이블 구성
이후 로그인 패키지를 구현하였다.
DB 연동을 위한 connector-j 설치
gradle에 추가하는 것으로 간단하게 설치 진행하였다.
User 클래스
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 클래스
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
'프로젝트 > 민원 처리 웹 서비스' 카테고리의 다른 글
데이터 플로우 작성 (0) | 2023.12.06 |
---|---|
웹 개발 프로젝트 : 민원 처리 웹 서비스 (1) | 2023.12.06 |