본문 바로가기

728x90
반응형

오라클

[코드로 배우는 스프링 웹 프로젝트] ch13 MyBatis와 스프링에서 페이징 처리(Criteria) ◎ MyBatis 스프링 페이징 처리 ▷ MyBatis는 SQL을 그대로 사용할 수 있기 때문에 인라인뷰를 이용하는 SQL을 작성하고 필요한 파리미터 지정하는 방식으로 페이징 처리 ▷ 필요한 파라미터 ▶ 페이지 번호 ▶ 한 페이지당 보여줄 데이터 수 ▷ 페이지 번호와 몇 개의 데이터가 필요한지 별도의 파라미터로 전달하는 방식도 좋지만 이 데이터들을 하나의 객체로 묶어 전달하는 방식이 확장성이 좋음 ◎ src/main/java → org.codehows.domain → Criteria 클래스 작성 ▷ Criteria : 검색의 기준을 의미 package org.codehows.domain; import lombok.Getter; import lombok.Setter; import lombok.ToStrin.. 더보기
[코드로 배우는 스프링 웹 프로젝트] ch12 오라클 데이터베이스 페이징 처리 2(hint, rownum) https://bobo12.tistory.com/304 3. 인덱스를 이용하는 정렬 ▷ 정렬이 되어 있다는 것이 가장 중요한 개념 ▷ 정렬이 이미 되어 있는 상태이므로 데이터를 찾아내서 이들을 SORT하는 과정을 생략할 수 있음 ▷ SORT가 없으면 0초에 가까운 성능을 보여줌 ▶ 데이터 양이 많고 정렬이 필요한 상황이라면 우선적으로 생각하는 것이 '인덱스' 작성하는 것 (1) 인덱스와 오라클 힌트(hint) ▷ 웹페이지 목록은 주로 시간의 역순으로 정렬된 결과를 보여줌(최신 데이터가 가장 중요하기 때문) ▷ 오라클의 select문 전달시 'hint' 사용 가능 : 내가 전달한 select 문을 이렇게 실행해 주면 좋겠다 라는 힌트 ▶ select문을 어떻게 처리할지에 대한 얘기일 뿐이므로 힌트 구문에서.. 더보기
[코드로 배우는 스프링 웹 프로젝트] ch12 오라클 데이터베이스 페이징 처리 1 ◎ 오라클 데이터베이스 페이징 처리 ▷ 구현된 기능들 중 가장 미숙한 부분은 목록 페이지 ▷ 목록 페이지는 기본적으로 페이징(pagination) 처리가 필요함 ▷ 수 많은 데이터를 한 페이지에서 보여주면 처리 성능에 영향을 미치며, 브라우저에서도 역시 데이터의 양이나 처리 속도에 문제를 일으킴 ▷ 일반적인 페이징 처리는 크게 번호를 이용하거나 '계속 보기'(무한 스크롤, 더 보기) 형태로 구현 1. order by의 문제 ▷ 프로그램을 이용해서 정렬할 때 데이터 양이 많을수록 많은 시간과 리소스를 소모함 ▶ 빠르게 처리 되는 것 ▶ 필요한 양만큼 가져오는 것이 중요 ▷ 페이징을 하는 이유 : 최소한의 필요한 데이터만 가져와서 빠르게 화면에 보여주기 위함 ▷ 빠르게 동작하는 SQL을 위해서는 먼저 ord.. 더보기
[코드로 배우는 스프링 웹 프로젝트] ch11 화면 처리 4 5. 게시물의 수정/삭제 처리 ▷ 조회 페이지에서 직접 처리하는 방식 ▷ 별도의 수정/삭제 페이지를 만들어 해당 페이지를 만들어 해당 페이지에서 수정과 삭제를 처리하는 방식 사용 ▷ 최근 게시물 조회 페이지에서 댓글 처리가 많아지면서 수정과 삭제는 별개의 페이지에서 하는 것이 일반적 (1) 수정/삭제 페이지로 이동 ▷ BoardController 에서 수정/삭제가 가능한 화면으로 이동하는 것은 조회 페이지와 같음 ◎ src/main/java → org.codehows.controller → BoardController 메소드 추가 @GetMapping({"/get","/modify"}) public void get(@RequestParam("bno") Long bno, Model model) { log... 더보기
[코드로 배우는 스프링 웹 프로젝트] ch11 화면 처리 3 https://bobo12.tistory.com/303 (2) 재전송(redirect) 처리 및 모달(Modal)창 보여주기 ▷ 등록 과정에서 POST 방식으로 데이터가 처리되는 과정을 그림으로 표현하면 아래와 같음 ▷ BoardController에서 register() 메소드는 'redirect:/board/list'를 전송하는데 브라우저는 이를 통보 받은 후 '/board/list'로 이동 ▷ 만약 위와 같이 재전송을 하지 않으면 사용자는 브라우저의 '새로고침'을 통해 동일한 내용을 계속 서버에 등록할 수 있어서 문제가 발생함. ▷ 브라우저에서는 이런 경우 경고창을 보여주기는 하지만 근본적으로 차단하지는 않음 ▷ 따라서 등록, 수정, 삭제 작업은 처리가 완료된 후 다시 동일한 내용을 전송할 수 없도록.. 더보기
[코드로 배우는 스프링 웹 프로젝트] ch11 화면 처리 2 https://bobo12.tistory.com/302 (3) jQuery 라이브러리 변경 ▷ JSP 페이지 작성시 JavaScript로 브라우저 내 조작이 필요한 경우가 많음 ▷ 예제는 jQuery를 이용할 것인데, 문제는 이전의 방식대로 처리했을 시 jQuery 라이브러리가 footer.jsp 내에 포함되어 있다는 점 ▷ 성능의 손해가 있더라도 jQuery를 header.jsp에 선언하면 작성하는 JSP에서 자유롭게 사용할 수 있습니다. ◎ footer.jsp에 있던 jquery 문구를 삭제하고 header 마지막에 추가합니다. ◎ jQuery를 교체한 후 모바일 크기에서 새로 고침 시 메뉴가 펼쳐지는 문제가 발생 ▷ fooder.jsp에 아래와 같은 코드 추가 ...(생략)... 2. 목록 화면 처.. 더보기
[코드로 배우는 스프링 웹 프로젝트] ch11 화면 처리 1 ◎ 화면 처리 ▷ 각 영역에 대한 모든 처리와 테스트가 완료되었고 만일 에러가 발생한다면 모든 문제는 화면 쪽에서만 발생함. ▷ 화면에는 JSP, JavaScript(jQuery), CSS, HTML 이용 ▷ 화면 개발 전에는 화면의 전체 레이아웃이나 디자인이 반영된 상태에서 개발하는 것이 좋음 ▶ BootStrap을 이용한 무료 디자인도 좋음(https://startbootstrap.com/template-categories/all/ ) ◎ 예제 사용 디자인 ▷ 'SB Admin2' 이용 ▷ http://cafe.naver.com/gugucoding (구멍가게코딩단 : 네이버 카페 (naver.com)) ▷ 해당 압축 파일을 다운 받은 후 압축 해제하고 6개의 폴더를 src/main/webapp/res.. 더보기
[코드로 배우는 스프링 웹 프로젝트] ch10 프레젠테이션(웹) 계층의 CRUD 구현 2 https://bobo12.tistory.com/300 (3) 조회 처리와 테스트 ▷ 등록 처리와 유사하게 조회 처리도 BoardController를 이용해 처리 가능 ▷ 특별한 경우가 아니라면 조회는 GET 방식으로 처리하므로, @GetMapping을 이용 ◎ src/main/java → org.codehows.controller → BoardController 클래스 수정 ...(생략)... @GetMapping("/get") public void get(@RequestParam("bno") Long bno, Model model) { log.info("get"); model.addAttribute("board", service.get(bno)); } } ▷ BoardController의 get() .. 더보기

728x90
반응형