Hamutaro - Hamtaro 4

Backend/Java

[์ž๋ฐ”] DAO, DTO์˜ ์—ญํ• ๊ณผ ๊ด€๊ณ„

carsumin 2021. 8. 18. 17:34

 

 

DAO (Data Access Object)

 

  • DB์™€ ๊ฐ™์€ ์ €์žฅ์†Œ์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ์ฒด
  • DB์™€ ์ง์ ‘ ํ†ต์‹ ํ•˜๊ณ  SQL ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๊ฒฐ๊ณผ๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ „๋‹ฌ
  • DAO๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด DB ๊ด€๋ จ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๊ณ  ํ…Œ์ŠคํŠธ๊ฐ€ ์‰ฌ์›Œ์ง
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ ์บก์Аํ™” : DAO๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์บก์Аํ™”
  • CRUD ์ž‘์—… : DAO๋Š” Create, Read, Update, Delete์™€ ๊ฐ™์€ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ์ž‘์—… ์ˆ˜ํ–‰
  • ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ๋กœ์ง์ด ์ค‘์•™ ์ง‘์ค‘ํ™”๋˜์–ด ์žˆ์–ด ์ˆ˜์ •์ด ์šฉ์ด

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

// DTO ํด๋ž˜์Šค
class User {
    private int id;
    private String name;
    private String email;

    // Getters and Setters
}

// DAO ํด๋ž˜์Šค
public class UserDAO {
    private Connection getConnection() throws SQLException {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "root";
        String password = "password";
        return DriverManager.getConnection(url, username, password);
    }

    public User getUserById(int id) {
        User user = null;
        String query = "SELECT * FROM users WHERE id = ?";

        try (Connection conn = getConnection();
             PreparedStatement stmt = conn.prepareStatement(query)) {

            stmt.setInt(1, id);
            ResultSet rs = stmt.executeQuery();

            if (rs.next()) {
                user = new User();
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("name"));
                user.setEmail(rs.getString("email"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return user;
    }

    // ๊ธฐํƒ€ CRUD ๋ฉ”์„œ๋“œ (์˜ˆ: addUser, updateUser, deleteUser)
}

 

 

DTO (Data Transfer Object)

 

  • ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด
  • ๊ณ„์ธต ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์Œ
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค์–‘ํ•œ ๊ณ„์ธต ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋™์‹œํ‚ค๋Š” ์—ญํ• 
  • ๋กœ์ง์ด ์—†์Œ, ์ˆœ์ˆ˜ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ์—ญํ• 
  • ๋ฐ์ดํ„ฐ ์ „์†ก : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์กฐํšŒํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋น„์Šค ๊ณ„์ธต์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋“ฑ ๊ณ„์ธต ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์œ„ํ•ด ์‚ฌ์šฉ
  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์—†์Œ : ๋กœ์ง์ด ์—†๋Š” ์ˆœ์ˆ˜ํ•œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด
  • ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค : ๋ณต์žกํ•œ ์—”ํ„ฐํ‹ฐ๋‚˜ ๋„๋ฉ”์ธ ๊ฐ์ฒด๋ฅผ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ๋‹ค๋ฅธ ๊ณ„์ธต์— ์ œ๊ณต
public class UserDTO {
    private int id;
    private String name;
    private String email;

    // ๊ธฐ๋ณธ ์ƒ์„ฑ์ž, Getters, Setters, toString() ๋ฉ”์„œ๋“œ ๋“ฑ
}

 

DAO์™€ DTO์˜ ๊ด€๊ณ„

 

  • DAO์™€ DTO๋Š” ๋ณดํ†ต ํ•จ๊ป˜ ์‚ฌ์šฉ๋จ. DAO๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ณ , DTO๋Š” ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋‹ด์•„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค๋ฅธ ๊ณ„์ธต์œผ๋กœ ์ „๋‹ฌ
  • DAO์™€ DTO๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋จ