Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

고마구의 개발 블로그

240702 11주차 화요일 - JDBC 02 본문

KDT풀스택과정 공부

240702 11주차 화요일 - JDBC 02

고마구 2024. 7. 2. 15:17

https://januaryman.tistory.com/200

jdbc03.zip
7.95MB

 

 

- 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초로 해야된다..