고마구의 개발 블로그
240702 11주차 화요일 - JDBC 02 본문
https://januaryman.tistory.com/200
- jdbc model1 -
모델1은 데이터베이스 관련 코드를 dao 클래스로 만들고,
데이터 베이스에서 읽어온 데이터를 dto클래스로 만들어 프로그램을 구현하는 개발 방식 중 하나이다.
* DAO는 Data Access Object, 데이터 액세스 오브젝트의 약자
* DTO는 Data Transfer Object, 데이터 트랜스퍼 오브젝트의 약자
- Access, 액세스 : 접근
- Transfer, 트랜스퍼 : 옮기다, 나르다, 양도하다, 전사하다, 전임시키다
- jdbc model2 -
model1은 데이터베이스 접근시 dto와 dao를 사용하여 구조화하여 만든 프로그램을 의미하고,
model2는 mvc패턴을 이용한 방법이다.
- model1를 frontcontroller와 jstl를 이용하여 model2로 만들어 수 있다.
-- mvc패턴이란? --
프로그램을 구현할때 하나로 만들지 않고 나누어 개발하는 방식 중 하나로,
MVC를 명확히 구분하여 프로그램 하는것을 의미한다.
- m은 model로 사용자의 요청을 처리하는 비즈니스로직을 의미한다.
- v는 view로 사용자에게 데이터를 입력받거나 결과를 보여주는 화면을 의미한다.
- c는 Controller로 사용자가 요청한 데이터를 판별하여 알맞은 데이터와 화면을 연결해 주는 작업을 한다.
mvc패턴은 각각의 코드들을 명확하게 구분하여 프로그램을 하여 코드 이해와 유지 보수를 쉽게 할 수 있다.
- 전 페이지에서 작성한 model1를 업그레이드 하여 model2를 만들어 수 있다.
Model 2 MVC(Model-View-Controller)는 웹 애플리케이션을 개발하기 위한 디자인 패턴 중 하나입니다.
- Model 2 MVC 패턴은 JSP 페이지와 Servlet을 조합하여 사용하는 방식으로,
웹 애플리케이션의 비즈니스 로직과 프레젠테이션 로직을 분리하여 개발할 수 있게 합니다.
Model 2 MVC 패턴에서 각각의 역할은 다음과 같습니다.
- Model : 데이터를 처리하고 비즈니스 로직을 수행하는 역할을 합니다.
데이터베이스나 사용자가 요청한 데이터 처리를 담당합니다.
* HumanController.java에서 사용자요청에 따른 DB작업이 이에 해당한다.
- View : 웹 페이지를 표시하는 역할을 합니다.
HTML, CSS, JavaScript 등으로 구성된 화면을 담당합니다.
사용자에게 보여줄 화면 .jsp가 뷰에 해당한다.
- Controller : 클라이언트의 요청을 처리하고,
Model과 View를 연결하여 전체적인 웹 애플리케이션의 흐름을 제어하는 역할을 합니다.
* HumanController.java가 컨트롤러에 해당한다.
Model 2 MVC 패턴은 다음과 같은 특징을 갖습니다.
- 비즈니스 로직과 프레젠테이션 로직을 분리하여 개발할 수 있습니다.
- 유지보수와 확장성이 뛰어나며, 코드의 재사용성을 높일 수 있습니다.
- Servlet과 JSP를 함께 사용하여 개발하기 때문에, 자바 기반의 웹 애플리케이션 개발에 적합합니다.
- Model 2 MVC 패턴을 사용하면 웹 애플리케이션을 구조적으로 개발할 수 있으며,
코드의 가독성과 유지보수성을 높일 수 있습니다.
-- 구분하는 방법은 다음과 같습니다. --
- Model 1 (DTO와 DAO 기반) -
-DTO (Data Transfer Object) :
)- 데이터를 전송하기 위한 객체로, 데이터의 구조를 정의합니다.
)- 주로 데이터베이스 테이블의 구조와 일치하는 형태로 정의됩니다.
)- 데이터를 담는 역할을 하며, 주로 JavaBeans 규약을 따릅니다 (게터, 세터 메서드 제공).
-DAO (Data Access Object) :
)- 데이터베이스와 직접적으로 상호작용하여 데이터를 읽고 쓰는 메서드를 제공하는 객체입니다.
)- DTO를 사용하여 데이터를 읽고 쓰는 역할을 수행합니다.
)- 주로 JDBC(Java Database Connectivity) API를 이용하여 데이터베이스와 통신합니다.
)- DAO는 데이터베이스 연결, 쿼리 실행, 결과 처리 등의 로직을 책임집니다.
- Model 2 (MVC 패턴) -
MVC (Model-View-Controller):
소프트웨어를 세 가지 주요 부분으로 분리하여 설계하는 패턴입니다.
-Model : 애플리케이션의 데이터와 비즈니스 로직을 나타내는 부분입니다. 일반적으로 DTO와 DAO를 포함합니다.
-View : 사용자에게 보여지는 부분으로, 화면 표시와 관련된 로직을 포함합니다.
-Controller : 모델과 뷰 사이의 중간 매개체로, 사용자 입력을 처리하고 해당 입력에 대한 애플리케이션 로직을 실행합니다.
MVC 패턴은 애플리케이션을 더 구조화하고 유지보수하기 쉽게 만들어줍니다.
구분 요약
- Model 1은 데이터베이스 접근을 위한 구조화된 접근 방식으로, DTO와 DAO를 중심으로 데이터 관리 및 접근을 처리합니다.
- Model 2는 MVC 패턴을 사용하여 애플리케이션을 모델, 뷰, 컨트롤러로 나누어 구조화하며, 각 부분이 역할을 분명히 가지고 있습니다.
private static final long serialVersionUID = 1L;
public static HumanService humanService=new HumanService();
String name ="";
int age =0;
Double height =0.0;
LocalDateTime birthday=LocalDateTime.now();
public HumanController() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uri = request.getRequestURI();
System.out.println("URI:" + uri);
String conPath = request.getContextPath();
System.out.println("conPath:" + conPath);
String command = uri.substring(conPath.length());
System.out.println("command:" + command);
String viewPage="view.jsp";
if(command.equals("/human/insert.human")) {
viewPage="insert.jsp";
}else if(command.equals("/human/select.human")) {
ArrayList<HumanDto> humanDtos=humanService.select();
request.setAttribute("humanDtos", humanDtos);
viewPage="select.jsp";
}else if(command.equals("/human/delete.human")) {
ArrayList<HumanDto> humanDtos=humanService.select();
request.setAttribute("humanDtos", humanDtos);
viewPage="delete.jsp";
}else if(command.equals("/human/update.human")) {
ArrayList<HumanDto> humanDtos=humanService.select();
request.setAttribute("humanDtos", humanDtos);
viewPage="update.jsp";
}else if(command.equals("/human/insertDB.human")) {
name =request.getParameter("name");
age =Integer.parseInt(request.getParameter("age"));
height =Double.parseDouble(request.getParameter("height"));
//yyyy-MM-dd'T'HH:mm
birthday=LocalDateTime.parse(request.getParameter("birthday")+":01");
humanService.insert(new HumanDto(name,age,height,birthday));
ArrayList<HumanDto> humanDtos=humanService.select();
request.setAttribute("humanDtos", humanDtos);
viewPage="select.human";
}else if(command.equals("/human/deleteDB.human")) {
name =request.getParameter("name");
humanService.delete(name);
viewPage="delete.human";
}else if(command.equals("/human/updateDB.human")) {
name =request.getParameter("name");
age =Integer.parseInt(request.getParameter("age"));
humanService.updateage(age,name);
viewPage="delete.human";
}else if(command.equals("/human/main.human")) {
viewPage="main.jsp";
}
System.out.println(viewPage);
RequestDispatcher dispatcher=request.getRequestDispatcher(viewPage);
dispatcher.forward(request, response);
}
LocalDateTime.parse 날짜 변환시 00초는 인식이 안됨
01초로 해야된다..
'KDT풀스택과정 공부' 카테고리의 다른 글
240704 11주차 목요일 - 미니 프로젝트 쇼핑몰 제작 01 (0) | 2024.07.04 |
---|---|
240703 11주차 수요일 - el,jstl (0) | 2024.07.03 |
240701 11주차 월요일 - JDBC 01 (0) | 2024.07.01 |
240629 10주차 토요일 (0) | 2024.06.29 |
240628 10주차 금요일 - JSP 05 (0) | 2024.06.28 |