DTO는 Data Transfer Object의 약자로, 데이터를 운반하는 역할을 하는 객체입니다. DTO는 주로 여러 계층(예: 데이터베이스, 서비스, 웹 등) 간에 데이터를 전달할 때 사용됩니다.
UserDTO예를 들어, User 정보(아이디, 이름, 이메일 등)를 담아 전달하는 UserDTO 클래스는 다음과 같습니다.
public class UserDTO {
private int userId;
private String username;
private String email;
// 기본 생성자
public UserDTO() {}
// getter와 setter
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
userId, username, email 필드가 있으며, 이는 데이터베이스나 애플리케이션에서 필요로 하는 사용자 정보를 담습니다.이렇게 DTO를 통해 데이터를 주고받으면, 서비스 계층이나 다른 클래스에서 데이터를 쉽게 주고받을 수 있습니다.
DAO는 Data Access Object의 약자로, 데이터베이스와의 상호작용을 담당하는 객체입니다. 주로 데이터베이스에 접근하여 데이터를 저장하거나 조회, 수정, 삭제하는 역할을 수행합니다.
Create(생성), Read(조회), Update(수정), Delete(삭제) 작업을 수행하는 메서드를 포함합니다.UserDAO다음은 UserDAO 클래스에서 UserDTO 객체를 활용하여 데이터베이스에서 사용자 정보를 조회, 삽입하는 예시입니다.
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class UserDAO {
private Connection conn;
// 데이터베이스 연결 메서드
private Connection getConnection() throws Exception {
String url = "jdbc:mariadb://localhost:3306/mydatabase";
String username = "root";
String password = "password";
conn = DriverManager.getConnection(url, username, password);
return conn;
}
// 사용자 추가
public void addUser(UserDTO user) throws Exception {
try {
conn = getConnection();
String sql = "INSERT INTO users (user_id, username, email) VALUES (?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, user.getUserId());
pstmt.setString(2, user.getUsername());
pstmt.setString(3, user.getEmail());
pstmt.executeUpdate();
} finally {
if (conn != null) conn.close();
}
}
// 모든 사용자 조회
public List<UserDTO> getAllUsers() throws Exception {
List<UserDTO> userList = new ArrayList<>();
try {
conn = getConnection();
String sql = "SELECT * FROM users";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
UserDTO user = new UserDTO();
user.setUserId(rs.getInt("user_id"));
user.setUsername(rs.getString("username"));
user.setEmail(rs.getString("email"));
userList.add(user);
}
} finally {
if (conn != null) conn.close();
}
return userList;
}
}
getConnection 메서드: 데이터베이스에 연결합니다.addUser 메서드: UserDTO 객체를 인자로 받아 데이터베이스에 사용자 정보를 삽입합니다.getAllUsers 메서드: 데이터베이스에서 모든 사용자 정보를 조회하고, 각 사용자 정보를 UserDTO 객체에 담아 리스트로 반환합니다.이렇게 DAO는 데이터베이스와의 직접적인 상호작용을 처리하여, 다른 클래스에서 데이터베이스와의 의존성을 줄일 수 있습니다.
| 개념 | 역할 | 포함 내용 |
|---|---|---|
| DTO | 데이터 전송을 위한 객체 | 순수 데이터, getter/setter, 비즈니스 로직 없음 |
| DAO | 데이터베이스 접근과 CRUD 작업 담당 | 데이터베이스 연결, SQL 실행, DTO와 함께 사용 |
UserDAO의 메서드를 호출합니다.UserDAO는 데이터베이스에 연결하고, 데이터 조회나 삽입 작업을 수행합니다.UserDTO 객체를 통해 데이터를 DAO와 서비스, JSP 페이지 간에 주고받습니다.