Backend/Web

[JSP]DTO & DAO⭐️

해로몬 2024. 11. 11. 16:40

DTO (Data Transfer Object) - 데이터 전송 객체

DTOData 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) - 데이터 접근 객체

DAOData 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