** ๐DTO ์ค๊ณ (์
๋ ฅํผ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ Java ํด๋์ค) **
์ฌ์ฉ์์ ์
๋ ฅ๊ฐ์ ๊ฐ์ฒด๋ก ์์ ํ๊ฒ ์ ์ฅํ๋ ๋ฐฉ๋ฒ
๊ตฌ์กฐ, ํ์ฉ ์์ , ๊ธฐ์ ๋ฉด์ ๊น์ง ์์ ์ ๋ฆฌ
๐งฉ ๋ชฉ์ฐจ
- DTO๋ ๋ฌด์์ธ๊ฐ?
- ์ DTO๋ฅผ ์ฌ์ฉํ๋๊ฐ?
- DTO ํด๋์ค ๊ธฐ๋ณธ ๊ตฌ์กฐ
- ์ค์ ํ๋ฆ ์์ (ํผ โ DTO โ DB)
- ์์ ์ฝ๋ (ํ์๊ฐ์
์ฉ DTO)
- ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
- ๋ง๋ฌด๋ฆฌ ์์ฝ + Notion ์์ฑ ํ
โ
1. DTO๋ ๋ฌด์์ธ๊ฐ?
์ฉ์ด |
์๋ฏธ |
DTO (Data Transfer Object) |
๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ ๋ฌํ๊ธฐ ์ํ ํด๋์ค |
์ฌ์ฉ ๋ชฉ์ |
JSP/Servlet ๊ฐ ๋๋ DB ์ฐ๋ ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด ๋จ์๋ก ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํจ |
ํน์ง |
ํ๋๋ private , ์ ๊ทผ์ getter/setter ์ฌ์ฉ |
โ
2. ์ DTO๋ฅผ ์ฌ์ฉํ๋๊ฐ?
์ด์ |
์ค๋ช
|
๐ก ๋ฐ์ดํฐ ๋ฌถ์ ์ฒ๋ฆฌ |
ํผ ์
๋ ฅ๊ฐ ์ฌ๋ฌ ๊ฐ๋ฅผ ํ๋์ ๊ฐ์ฒด๋ก ๋ฌถ์ด์ ์ ๋ฌ |
๐ก๏ธ ๋ณด์์ฑ & ๊ตฌ์กฐํ |
์ง์ ํ๋ผ๋ฏธํฐ ๋์ ์์ ํ ์ ๊ทผ ๋ฐฉ์ ์ฌ์ฉ (์บก์ํ) |
๐ ์ ์ง๋ณด์ ์ฉ์ด |
ํ๋ ์ถ๊ฐ/์ญ์ ๊ฐ ์ฉ์ดํ๋ฉฐ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ |
๐ค MVC ๋ถ๋ฆฌ |
Controller(์๋ธ๋ฆฟ)์ Model(DB) ์ฌ์ด๋ฅผ ์ฐ๊ฒฐํด์ค |
โ
3. DTO ํด๋์ค ๊ธฐ๋ณธ ๊ตฌ์กฐ โ๏ธ
// MemberDTO.java
public class MemberDTO {
// 1. private ๋ณ์ ์ ์ธ
private String name;
private String email;
// 2. ๊ธฐ๋ณธ ์์ฑ์
public MemberDTO() {}
// 3. getter & setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
โ
4. ์ค์ ํ๋ฆ ์์ ๐ฏ
[form.jsp] ์ฌ์ฉ์ ์
๋ ฅ
โฌ๏ธ request.getParameter()
[Servlet] ์
๋ ฅ๊ฐ โ DTO ์ ์ฅ
โฌ๏ธ setName(), setEmail()
[DAO] DTO ๊ฐ์ DB์ ์ ์ฅ
โ
5. ์์ ์ฝ๋ ํ๋ฆ
<form action="register" method="post">
์ด๋ฆ: <input type="text" name="name" /><br />
์ด๋ฉ์ผ: <input type="text" name="email" /><br />
<input type="submit" value="ํ์๊ฐ์
" />
</form>
๐ RegisterServlet.java (DTO ๊ฐ์ฒด ์์ฑ ๋ฐ ์ ๋ฌ)
@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
// 1. ์
๋ ฅ๊ฐ ๋ฐ๊ธฐ
String name = request.getParameter("name");
String email = request.getParameter("email");
// 2. DTO ๊ฐ์ฒด ์์ฑ ๋ฐ ๊ฐ ์ค์
MemberDTO dto = new MemberDTO();
dto.setName(name);
dto.setEmail(email);
// 3. DAO์ ์ ๋ฌ
MemberDAO dao = new MemberDAO();
dao.insert(dto);
// 4. ์๋ต ์ฒ๋ฆฌ
response.sendRedirect("success.jsp");
}
}
๐ MemberDAO.java (DTO๋ฅผ ์ฌ์ฉํ DB ์ ์ฅ)
public class MemberDAO {
public void insert(MemberDTO dto) {
try {
Connection conn = DB.getConnection();
String sql = "INSERT INTO members(name, email) VALUES (?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, dto.getName());
ps.setString(2, dto.getEmail());
ps.executeUpdate();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
โ
6. ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ
์ง๋ฌธ |
์์ ์ ๋ฆฌ |
DTO๋ ๋ฌด์์ธ๊ฐ์? |
๋ฐ์ดํฐ๋ฅผ ๋ฌถ์ด์ ์ ๋ฌํ๋ ๊ฐ์ฒด, ์ฃผ๋ก Form โ Servlet โ DB ์ ๋ฌ์ ์ฌ์ฉ |
DTO์ ์ฅ์ ์? |
์บก์ํ, ์ฝ๋ ๊ฐ๊ฒฐํ, ์ ์ง๋ณด์ ์ฉ์ด |
DTO๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ง์ ์ฒ๋ฆฌํ๋ฉด ์ด๋ค ๋ฌธ์ ๊ฐ ์๋์? |
ํ๋ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง๊ณ ์ ์ง๋ณด์ ์ ์๋ฌ ๋ฐ์ ํ๋ฅ โ |
DTO์ JavaBean์ ๊ด๊ณ๋? |
๋๋ถ๋ถ DTO๋ JavaBean ๊ท์น(๊ธฐ๋ณธ ์์ฑ์, private, getter/setter)์ ๋ฐ๋ฆ |
โ
7. ๋ง๋ฌด๋ฆฌ ์์ฝ ๐ง
- ๐ฆ DTO = ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ ๋ฌํ๋ ์ฉ๊ธฐ
- ๐ ํ๋๋
private
, ์ ๊ทผ์ getter/setter
- ๐ JSP โ Servlet โ DAO ํ๋ฆ์์ ์ค์ฌ ์ญํ
- โ
MVC ๊ตฌ์กฐ์ ํต์ฌ Model ๊ตฌ์ฑ์์ ์ค ํ๋