DTO (Data Transfer Object) - 데이터 전송 객체
DTO는 Data Transfer Object의 약자로, 데이터를 운반하는 역할을 하는 객체입니다. DTO는 주로 여러 계층(예: 데이터베이스, 서비스, 웹 등) 간에 데이터를 전달할 때 사용됩니다.
DTO의 주요 특징
- 순수한 데이터만 저장: DTO에는 오직 데이터와 그에 해당하는 getter/setter 메서드만 존재합니다.
- 비즈니스 로직 없음: 계산이나 처리 등의 복잡한 로직은 포함하지 않으며, 단순히 데이터를 담고 전달하는 역할만 합니다.
- 데이터 구조를 정의: 각 필드는 데이터베이스의 컬럼이나 비즈니스 로직에서 필요로 하는 데이터와 매핑됩니다.
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;
}
}
DAO (Data Access Object) - 데이터 접근 객체
DAO는 Data Access Object의 약자로, 데이터베이스와의 상호작용을 담당하는 객체입니다. 주로 데이터베이스에 접근하여 데이터를 저장하거나 조회, 수정, 삭제하는 역할을 수행합니다.
DAO의 주요 특징
- 데이터베이스 작업 전담: 데이터베이스와의 연결, SQL 실행 등을 처리합니다.
- CRUD 작업 담당: Create(생성), Read(조회), Update(수정), Delete(삭제) 작업을 수행하는 메서드를 포함합니다.
- DTO와 함께 사용: DAO는 주로 DTO와 함께 사용하여, 데이터베이스로부터 조회한 데이터를 DTO에 담아 반환하거나, DTO에 담긴 데이터를 받아 저장합니다.
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;
}
}
'Backend > Web' 카테고리의 다른 글
| Servlet⭐️ (0) | 2024.11.12 |
|---|---|
| [JSP] include 액션 태그와 디렉티브 | forward, JavaBean 액션태그 (0) | 2024.11.11 |
| 인텔리제이 Apache Tomcat 설정하기 (0) | 2024.11.08 |
| [JSP] JDBC 연동 (3) | 2024.11.08 |
| JSP(Java Server Page)/Sevelt (1) | 2024.11.07 |