데이터 전송을 위한 객체이다. 주로 데이터를 저장
하고 전송
하는 용도로 사용되며, 데이터베이스나 서비스와의 데이터 교환을 간단하게 하기 위해 사용된다. 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;
}
}
데이터 저장과 함께 비즈니스 로직과 기능을 가질 수 있는 객체이다. 보통 자바빈 규약에 따라 작성되며, 데이터의 접근자(getter)와 설정자(setter) 메서드뿐만 아니라 추가적인 로직을 포함할 수 있다.
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;
}
}
<jsp:useBean id="test" class="pack2.Test14ConnPooling"/>
<%
SangpumDto dto = test.getData(code);
if(dto==null){
SangpumDto
는 데이터를 저장하는 데 초점을 맞춘 클래스이다. DTO 클래스는 상품 데이터를 DB로부터 가져오고, 이를 JSP 페이지에서 사용자에게 보여주기 위해 사용된다. 따라서 SangpumDto
가 데이터를 간편하게 저장하고 전송하기에 적합한 역할을 할 수 있다.SangpumDto
를 사용함으로써 데이터를 교환하는 용도로 클래스를 선택했다. 만약 BangBean이 비즈니스 로직이나 추가 기능을 가지고 있다면, 코드 작성자가 단순히 데이터를 교환하는 목적으로 SangpumDto를 더 적합하다고 판단했을 것입니다.즉, SangpumDto가 데이터 전달에 더 적합하게 느껴져서 선택하였다.
데이터를 저장하고 전달하는 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 인스턴스의 각 속성에 저장된 값을 출력한다.
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와의 상호작용