본문 바로가기

728x90
반응형

Server Programming

(202)
5장-5. 게시물 관리 프로젝트 구현 (2) CRUD (+ #temporals, #number, HistoryAPI) 요구 사항 목록 처리 등록 처리 조회 처리 수정 처리 삭제 처리 CRUD 컨트롤러와 화면 개발 (1) 컨트롤러 작성 (2) 화면 작성 (3) 화면에서 테스트 목록 처리 1. 컨트롤러 작성 -BoardController에 list() 메서드 작성 package org.zerock.b01.controller; import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web...
5장-4. 게시물 관리 프로젝트 구현 (1) (+ withAll, RootConfig) 사용 기술 Spring Data JPA로 영속 계층 처리 Thymeleaf로 화면 처리 스프링 부트로 컨트롤러와 서비스 처리 구현 순서 서비스 계층과 DTO 구현 목록/검색 처리 컨트롤러와 화면 처리 서비스 계층과 DTO 구현 ModelMapper 설정 CRUD 작업 처리 : 등록 / 조회 / 수정 / 삭제 HTTP 요청 -> 컨트롤러에서 매핑 -> 서비스 계층에서 리포지토리 메서드 호출-> BoardRepository-> 서비스 계층에서 DTO로 변환 : 모든 DB로 접근은 리포지토리를 거쳐 엔티티에 접근하는 방식으로 엔티티 객체는 영속 컨텍스트에서 관리한다. ModelMapper 설정 ModelMapper : 엔티티 DTO를 담당한다. (1) 의존성 추가 implementation 'org.model..
5장-3. Spring Data JPA (+ 리스너, Optional, 쿼리메서드,JPQL, Querydsl 동적쿼리) 요구사항 게시물 등록/수정/삭제/조회 게시물 목록 화면에서 검색/페이징 처리 각각의 화면에서 기능 수행 후, 조건을 적용한 상태에서 PRG 패턴 적용 JPA의 핵심인 영속계층의 엔티티를 객체지향을 통해 처리하는 JpaRepository 목적 : 데이터를 담은 엔티티 객체를 DB와 연동 관리 영속 컨텍스트와 데이터베이스를 동기화해서 관리 엔티티 객체 : PK를 가지는 자바의 객체로 엔티티의 생명주기를 관리하는 것이 핵심 @Id 어노테이션 : 엔티티 객체를 고유하게 식별하기 위해 구분하고 관리하기 위한 어노테이션 @Entity 어노테이션 : 엔티티 클래스를 나타내는 어노테이션 Spring Data JPA : 엔티티 객체를 JPA로 관리하기 위한 스프링 관련 라이브러리 JpaRepository 인터페이스 : ..
5장-2. Thymeleaf JSP를 대신하는 템플릿 라이브러리 Thymeleaf Thymeleaf 사용을 위한 네임스페이스 지정 Model에 담긴 데이터 사용시 변수 찾지 못하는 에러 해제 : Settings- Thymeleaf - Unresolved references in Thymeleaf expression variables Thymeleaf 순서 출력 : 'th :', 인라인 '[[${~}]]' 변수 선언 : with 반복문과 제어문 : each, 삼항연산자, Switch 링크 처리 : '@', 쿼리스트링, URLEncoding 고유한 기능 : 인라인, 레이아웃 Thymeleaf 출력 Model에 담긴 데이터 출력 방법 'th: '로 시작하는 속성 이용 인라인 이용 (1) 출력 테스트를 위해 컨트롤러에 ex1() 메서드 작..
5장-1. 스프링 부트의 시작 (+Thymeleaf, RESTful, JSON, API Server) 요구사항 스프링 프레임워크 기반 개발에서 스프링 부트 기반 개발로의 전환 스프링 부트의 특징 스프링 + 자동설정 = 스프링 부트 톰캣이 내장되어 있고, 단독 실행 가능하다 -> 스프링 부트 프로젝트를 jar파일로 만들어 다른 운영체제에서 실행 가능 서블릿 -> 스프링의 경우, 기존 코드 재활용 불가 스프링 -> 스프링 부트의 경우, 코드 재활용 가능 스프링 JSP MyBatis log4j2 HikariCP 버전 관리가 필요한 build.gradle XML 설정 root-context.xml servlet-context.xml web.xml 스프링 부트 템플릿 엔진인 Thymleaf을 이용해 화면을 구성하거나 혹은 API 서버 형태로 화면을 구성하지 않고 데이터만 제공하기도 한다. JPA (별도의 SQL ..
4장-4. 스프링 Web MVC 구현 (3) 검색과 필터링 조건 (+ 동적 쿼리, 쿼리 스트링, URLEncoder) 요구사항 단순한 검색 제목, 작성자는 키워드를 이용해 검색 필터링을 이용한 복잡한 검색 완료 여부를 필터링 특정한 기간을 지정한 필터링 구현 순서 검색/필터링 조건 결정 type에 따른 동적 쿼리 작성 검색 조건을 위한 화면 처리 검색/필터링 조건 정의 검색과 필터링에 필요한 데이터 keyword: 제목, 작성자 검색에 사용하는 문자열 finished : 완료 여부에 사용되는 boolean from, to : 특정 기간 검색을 위한 LocalDate 검색/필터링 조건 결정 검색 기능의 경우의 수를 구분 -'완료 여부', '제목', '작성자', '기간'의 조합으로 구성 검색의 실제값은 검색 종류에 따라 키워드를 이용하는데 -PageRequestDTO에 필요한 변수를 추가해서 구성한다. PageRequest..
4장-3. 스프링 Web MVC 구현 (2) 페이징 처리 (+ 백틱) 요구사항 페이징 처리 페이징 DTO PageRequestDTO PageResponseDTO TodoMapper -limit(), count() TodoMapper의 목록 처리 TodoMapper의 count 처리 TodoService TodoController 목록 페이지 JSP 작성 CRUD 연동 limit을 이용한 페이징 구현 원리 많은 데이터 -> 페이징 처리를 통해 최소한의 데이터만을 출력 : DB에서 필요한 데이터만 가져와 SQL 입출력을 최소화한다. -MySQL, MariaDB에서는 limit이라는 기능을 이용해 페이징 처리가 가능하다. limit() 파라미터를 하나 혹은 두개를 받는다. 하나일 경우 : select * from tbl_todo order by tno desc limit 10;..
4장-2. 스프링 Web MVC 구현 (1) CRUD (+@Configuration, @Bean, 브라우저 한글 처리) 웹 MVC에서 스프링 프레임워크와 스프링 MVC으로의 이전 XML 설정 -> 어노테이션을 이용한 자바 설정 사용 기술 스프링 프레임워크 MyBatis 스프링 MVC 요구사항 CRUD 페이징 검색 검색과 필터링 가능한 화면 MyBatis의 동적 쿼리을 이용해 해당하는 Todo검색 새로운 Todo 등록시 문자열, boolean, LocalDate를 자동으로 처리 목록에서 조회 화면 이동시 모든 검색, 필터링, 페이징 조건 유지 조회 화면에서 모든 조건 유지한 채로, 수정/삭제 화면으로 이동 삭제 후, 다시 목록 화면으로 이동 (PRG) 수정 후, 다시 조회 화면으로 이동하지만 검색, 필터링, 페이지 조건은 초기화 (PRG) 한글 깨짐 처리를 위한 인코딩 설정 1. VM 옵션 2. File Encoding 옵..

728x90
반응형