Back-End
-
[3-ch12 Spring web 게시판] 페이징 처리, 힌트(hint), ROWNUM & 인라인뷰 적용Back-End/Spring Legacy 2022. 8. 28. 09:51
order by의 문제 데이터의 양이 많을수록 정렬이라는 작업은 많은 리소스를 소모한다. 데이터베이스를 이용할 때 웹이나 애플리케이션에서 가장 신경쓰는 부분은 1) 빠르게 처리되는 것, 2) 필요한 양만큼만 데이터를 가져오는 것이다. 예를들어, 거의 모든 웹페이지에서 페이징을 하는 이유는 최소한의 필요한 데이터만을 가져와 빠르게 화면에 보여주기 위함이다. 만일 수백 만개의 데이터를 매번 정렬해야 하는 상황이라면 사용자는 정렬된 결과를 볼 때까지 오랜 시간을 기다려야만 하고, 특히 웹에서 동시에 여러 명의 사용자가 정렬이 필요한 데이터를 요청하게 된다면 시스템에는 많은 부하가 걸리게 되고 연결 가능한 커넥션의 개수가 점점 줄어서 서비스가 멈추는 상황을 초래하게 된다. 실행 계획과 order by 오라클의 ..
-
[3-ch11 Spring view] 게시글 조회, 수정/삭제, 뒤로가기 처리Back-End/Spring Legacy 2022. 8. 26. 16:21
조회 페이지 작성 조회 페이지는 입력 페이지와 거의 유사하지만 게시물의 번호(bno)가 출력된다는 점과 모든 데이터가 읽기 전용으로 처리된다는 점이 가장 큰 차이점이다. 목록 페이지에서 링크를 통해 GET 방식으로 특정 번호의 게시물을 조회할 수 있다. @GetMapping("/get") public void get(@RequestParam("bno") Long bno, Model model) { log.info("get" ); model.addAttribute("board", service.get(bno)); } get.jsp는 게시물의 번호를 보여줄 수 있는 필드를 추가한다. 모든 데이터는 readonly를 지정해서 작성한다. 특정 게시글 조회 페이지에선 데이터를 전송할 일이 없기에 form 태그를 ..
-
[3-ch11 Spring view] 게시판 목록, 등록 jsp 화면 처리하기, jQuery 통해 Modal 창 띄우기Back-End/Spring Legacy 2022. 8. 24. 16:46
화면 처리 템플릿 화면을 개발하기 전에는 반드시 전체 레이아웃이나 디자인이 반영된 상태에서 개발하는 것을 추천한다. 웹 디자이너가 같이 참여하지 못한다면 BootStrap을 이용한 무료 디자인을 찾아보는 것도 좋다. 오늘 포스팅할 페이지들은 모두 아래 파일을 베이스로 잡아두었다. 목록 페이지 작업과 includes 스프링 MVC의 JSP를 처리하는 설정을 servlet-context.xml에 아래와 같이 작성되어 있다. 스프링 MVC의 설정에서 화면 설정은 ViewResolver라는 객체를 통해 이뤄지는데, 위의 설정을 보면 '/WEB-INF/viesws'를 이용하는 것을 볼 수 있다. WEB-INF 경로는 브라우저에서 직접 접근할 수 없는 경로이므로 반드시 Controller를 이용하는 모델 2방식에서..
-
[3-ch10 스프링] 프레젠테이션(웹) 계층의 CRUD 구현Back-End/Spring Legacy 2022. 8. 23. 12:30
앞 포시팅에서, 비즈니스 계층과(Service) 영속계층 (MyBatis, Mapper.xml) 계층 구현은 완료했다. 그럼 스프링 MVC 작업에서 남은 건 Cotroller 이기에 이번 포스팅에선 Controller 메서드를 작성해보도록 하겠다. https://wonisdaily.tistory.com/53 [3-ch8 스프링] 영속/비지니스 계층의 CRUD 구현, Mapper 인터페이스와 xml VO 클래스 작성 VO 클래스를 생성하는 작업은 테이블 설계를 준으로 작성하면 된다. tbl_board 테이블의 구성대로 작성한다. 프로젝트에 org.zerock.domain 패키지를 생성하고 BoardVO 클래스를 정의한다. p wonisdaily.tistory.com https://wonisdaily.tis..
-
[Spring] GET/POST 두 방식의 특징과 차이점 알아보기Back-End/Spring Legacy 2022. 8. 23. 10:07
서버 API를 구현하다보면 GET/POST 방식을 볼 수 있는데 주로 @RequestMapping(value = "/basic", method= {RequestMethod.GET, RequestMethod.POST}) 이런 방식으로 RequestMapping이나 아예 각자 하나씩만 다루는 @GetMapping, @PostMapping 어노테이션을 사용하는 컨트롤러에서 만날 수 있다. 그럼 의문이 들지 않는가 어떨때 Get을 사용하고 어떨때 Post를 사용하는지! 오늘은 두 방식의 특징과 차이점을 알아보려고 한다. 전달 방식 GET/POST는 HTTP 프로토콜을 이용해서 서버에 정보를 전달할 때 사용하는 방식이다. 둘의 차이점은 어디에 위치해있는가인데 POST 용청 시 URL 파라미터가 보이지 않는 이유는..
-
[3-ch9 비즈니스 계층] Service의 생성과 설정Back-End/Spring Legacy 2022. 8. 19. 13:22
비즈니스 계층이란? 비즈니스 계층은 고객의 요구사항을 반영하는 계층으로 프레젠테이션 계층(컨트롤러, view) 과 영속 계층(db)의 중간 다리 역할을 하게 된다. 영속 계층은 데이터베이스를 기준으로 해서 설계를 나눠 구현하지만, 비즈니스 계층은 로직을 기준으로 해서 처리한다. 예를들어, '쇼핑몰에서 상품을 구매한다'고 가정해볼때, 해당 쇼핑몰의 로직이' 물건을 구매하는 회원에게는 포인트를 올려준다'고 하면 영속 계층의 설계는 '상품'과 '회원'으로 나누어서 설계하게 된다. 반면에 비즈니스 계층은 상품 영역과 회원 영역을 동시에 사용해서 하나의 로직을 처리하게 되므로 다음과 같은 구조를 만들게 된다 . 오늘 포스팅할 예제는 단일 테이블을 이용하고 있기 때문에 위와 같은 구조는 아니지만, 설계를 할 때는 ..
-
[3-ch8 스프링] 영속/비지니스 계층의 CRUD 구현, Mapper 인터페이스와 xmlBack-End/Spring Legacy 2022. 8. 19. 10:41
VO 클래스 작성 VO 클래스를 생성하는 작업은 테이블 설계를 준으로 작성하면 된다. tbl_board 테이블의 구성대로 작성한다. 프로젝트에 org.zerock.domain 패키지를 생성하고 BoardVO 클래스를 정의한다. package org.zerock.domain; import java.util.Date; import lombok.Data; @Data public class BoardVO { private Long bno; private String title; private String content; private String writer; private Date regDate; private Date updateDate; } Mapper 인터페이스와 Mapper XML MyBatis는 SQ..
-
[3-ch7 스프링 MVC] 프로젝트 기본 구성, DB 더미 테이블 생성Back-End/Spring Legacy 2022. 8. 17. 11:24
스프링 MVC 프로젝트의 기본 구성 일반적으로 웹 프로젝트는 3-tier(티어) 방식으로 구성된다. Persentation tier(화면계층)은 화면에 보여주는 기술을 사용하는 영역이다. 앞의 포스팅 내용을 살펴봤을 땐 Servlet/JSP나 스프링 MVC가 담당하는 영역이 된다. Persentation tier는 프로젝트의 성격에 맞춰 앱으로 제작하거나, CS(Client-Server)로 구성되는 경우도 있다. Business Tier(비지니스 계층)는 순수한 비즈니스 로직을 담고있는 영역이다. 이 영역이 중요한 이유는 고객이 원하는 요구 사항을 반영하는 계층이기 때문이다. 이 영역의 설계는 고객의 요구 사항과 정학히 일치해야 한다. 이 영영은 주로 'xxxService'와 같은 이름으로 구성하고, 메..