DTO와 Bean의 차이

까만호랭·2023년 8월 22일
1

📢 DTO(Data Transfer Object)

데이터 전송을 위한 객체이다. 주로 데이터를 저장하고 전송하는 용도로 사용되며, 데이터베이스나 서비스와의 데이터 교환을 간단하게 하기 위해 사용된다. DTO는 데이터의 속성을 저장하는데 중점을 둡니다.

DTO 클래스

public class BangDto {
	private String code, name;

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

📢 Bean

데이터 저장과 함께 비즈니스 로직과 기능을 가질 수 있는 객체이다. 보통 자바빈 규약에 따라 작성되며, 데이터의 접근자(getter)와 설정자(setter) 메서드뿐만 아니라 추가적인 로직을 포함할 수 있다.

Bean 클래스

public class BangBean {
	private String code, name;

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

📖 DTO 사용하기

<jsp:useBean id="test" class="pack2.Test14ConnPooling"/>
<%
SangpumDto dto = test.getData(code);
if(dto==null){
  • 여기서 `useBean`을 통해 `Test14ConnPooling`이란 클래스를 `test`란 이름으로 부여하였다.
  • SangpumDto가 사용된 이유

    1. 데이터 교환
      SangpumDto는 데이터를 저장하는 데 초점을 맞춘 클래스이다. DTO 클래스는 상품 데이터를 DB로부터 가져오고, 이를 JSP 페이지에서 사용자에게 보여주기 위해 사용된다. 따라서 SangpumDto가 데이터를 간편하게 저장하고 전송하기에 적합한 역할을 할 수 있다.
    2. 코드 의도
      SangpumDto를 사용함으로써 데이터를 교환하는 용도로 클래스를 선택했다. 만약 BangBean이 비즈니스 로직이나 추가 기능을 가지고 있다면, 코드 작성자가 단순히 데이터를 교환하는 목적으로 SangpumDto를 더 적합하다고 판단했을 것입니다.

    즉, SangpumDto가 데이터 전달에 더 적합하게 느껴져서 선택하였다.

    📖 Bean 사용하기

    데이터를 저장하고 전달하는 JSP 코드를 작성해보자

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@page import="pack.BangBean"%>
    
    <jsp:useBean id="bang" class="pack.BangBean" />
    
    <%
       // 데이터 설정
       bang.setCode("123");
       bang.setName("John Doe");
    %>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Bean Example</title>
    </head>
    <body>
    <h1>Bean Example</h1>
    <p>Code: <%= bang.getCode() %></p>
    <p>Name: <%= bang.getName() %></p>
    </body>
    </html>

    <jsp:useBean id="bang" class="pack.BangBean" />:
    이 부분에서 BangBean 클래스의 인스턴스를 생성하고 bang라는 이름으로 request 스코프에 저장한다.

    <% ... %>:
    이 부분에서는 BangBean의 인스턴스인 bang을 사용하여 데이터를 설정하였다. 코드 상에서는 각 속성에 값을 설정하고 있다.

    <%= bang.getCode() %>, <%= bang.getName() %>, ...:
    이 부분에서는 bang 인스턴스의 각 속성에 저장된 값을 출력한다.

    bean 사용

    public void updateData(BoardBean bean) {
    		try {
    			String sql = "update board set name=?, title=?, mail=?, cont=? where num=?";
    			conn = ds.getConnection();
    			pstmt = conn.prepareStatement(sql);
    			pstmt.setString(1, bean.getName());
    			pstmt.setString(2, bean.getTitle());
    			pstmt.setString(3, bean.getMail());
    			pstmt.setString(4, bean.getCont());
    			pstmt.setInt(5, bean.getNum());
    			pstmt.executeUpdate();
    		} catch (Exception e) {
    			System.out.println("updateData err : " + e.getMessage());
    		} finally {
    			try {
    				if(rs!=null) rs.close();
    				if(pstmt!=null) pstmt.close();
    				if(conn!=null) conn.close();
    			} catch (Exception e2) {
    				// TODO: handle exception
    			}
    		}
    	}

    이 예시 코드에서는 BangBean을 사용하여 데이터를 저장하고 JSP 페이지에서 해당 데이터를 출력하는 방법이다. 이런 방식은 데이터를 저장하는 객체와 데이터를 보여주는 부분을 분리하여 코드를 조직화하고 유지보수하기 용이하게 만들 수 있다는 장점을 가진다.

    DTO는 주로 데이터 전송을 위해 사용되며 데이터의 읽기 전용 측면에 초점을 맞춘다. ==> 비즈니스 로직으로 전달하는데 사용
    Bean은 데이터의 저장 및 전달을 위해 사용되며 데이터를 설정하고 읽는 기능을 포함합니다. ==> DB와의 상호작용

    profile
    남들과 함께 발자국을 남기는 까만호랭

    0개의 댓글