VO 클래스 (Value Object 또는 DTO - Data Transfer Object):
데이터를 담는 객체로, 주로 데이터베이스의 레코드와 일치하는 구조를 가집니다.
데이터의 구조만을 가지며, 데이터의 가공, 비즈니스 로직은 포함하지 않습니다.
예를 들어, 사용자 정보를 저장하는 UserVO 클래스가 있을 수 있습니다.
public class UserVO {
private int id;
private String username;
private String email;
// Getters and setters
}
DAO 클래스 (Data Access Object):
데이터베이스와의 상호 작용을 추상화하여 제공하는 클래스입니다.
데이터의 조회, 삽입, 갱신, 삭제 등의 기능을 담당하며, 데이터베이스와의 접근을 단순화하고 추상화합니다.
DAO 클래스는 주로 SQL 쿼리를 생성하고 실행하는 역할을 수행합니다.
데이터베이스 연결 관리도 이 클래스에서 처리합니다.
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDAO {
private Connection connection;
public UserDAO(Connection connection) {
this.connection = connection;
}
public UserVO getUserById(int userId) throws SQLException {
String sql = "SELECT id, username, email FROM users WHERE id = ?";
try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
preparedStatement.setInt(1, userId);
try (ResultSet resultSet = preparedStatement.executeQuery()) {
if (resultSet.next()) {
UserVO user = new UserVO();
user.setId(resultSet.getInt("id"));
user.setUsername(resultSet.getString("username"));
user.setEmail(resultSet.getString("email"));
return user;
}
}
}
return null;
}
}
View 클래스 (사용자 인터페이스):
사용자에게 데이터나 결과를 표시하고 입력을 받는 역할을 담당합니다.
사용자와 상호 작용하는 부분을 처리하며, 데이터의 가시성을 관리합니다.
JDBC 관련 코드는 주로 View 클래스 내부에서 호출되어 데이터를 표시하거나 입력을 받을 때 사용될 수 있습니다.
import java.util.Scanner;
public class UserView {
public int getInputFromUser() {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter user ID: ");
return scanner.nextInt();
}
public void displayUser(UserVO user) {
if (user != null) {
System.out.println("User ID: " + user.getId());
System.out.println("Username: " + user.getUsername());
System.out.println("Email: " + user.getEmail());
} else {
System.out.println("User not found.");
}
}
}
Run 클래스 (실행 클래스 또는 Main 클래스):
프로그램의 시작점으로, 실행을 위한 메서드를 포함합니다.
필요한 객체를 생성하고 관련 클래스들을 조합하여 실제로 프로그램을 실행합니다.
데이터베이스 연결을 설정하고 비즈니스 로직을 구현하는 부분도 이 클래스 내에서 이루어질 수 있습니다.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "username";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, username, password)) {
UserDAO userDAO = new UserDAO(connection);
UserView userView = new UserView();
int userId = userView.getInputFromUser();
UserVO user = userDAO.getUserById(userId);
userView.displayUser(user);
} catch (SQLException e) {
e.printStackTrace();
}
}
}