본문 바로가기

반응형

Server Programming/Spring Boot Backend Programming

(46)
7장-2. 일대다 연관관계인 게시물과 첨부파일 (+ 매핑테이블, @Transactional, @EntityGraph) 연관관계 다대일 연관관계 일대다 연관관계 기준 다른 엔티티 객체의 참조로 FK가 속하는 쪽 기준 PK를 가진 쪽 기준 어노테이션 @ManyToOne @OneToMany 로딩 방식 기본값 fetchType.EAGER fetchType.LAZY 특징 'N+1' 문제 발생 주의 간편한 하위 엔티티 관리 요구사항 일대다 연관관계 @OneToMany를 이용해 일대다 연관관계 처리 영속성 전이를 이용해, 일대다 관계에 있는 엔티티 객체 삭제 처리 참조 방식 단방향 : @JoinColumn을 이용해 참조관계 형성 양방향 매핑 테이블 이용해 양방향 참조관계 형성 mappedBy 속성을 이용해 양방향 참조관계 형성 일대다 연관관계 - 매핑 테이블 생성하는 양방향 참조관계 @ManyToOne : 댓글의 관점에서 게시물을 ..
7장-1. 다중 파일 업로드 처리 (+MultipartFile) 요구사항 게시물 목록에 썸네일 이미지 추가 게시물 등록시에 이미지 업로드 게시물 조회시 이미지 출력 첨부파일의 처리 브라우저의 데이터를 파일 형태로 서버에 보관 업로드한 데이터의 부가 정보를 처리 파일 업로드시 고려사항 UUID : 동일 파일명을 고유 파일명으로 처리 Thumbnailator : 썸네일 파일 처리 JSON 데이터로 업로드 결과 반환 GET 방식으로 업로드 파일 조회 DELETE 방식으로 업로드 파일 삭제 MultipartFile API를 이용한 파일 업로드 컨트롤러에서 파라미터로 전달해 업로드 처리를 수행하는 것보다 Swagger UI로 테스트하기 위해서 dto 패키지에 UploadFileDTO를 별도의 DTO로 선언 1. apllication.properties에 파일 관련 설정 추가 ..
6장-3. 댓글의 자바스크립트 처리 (+Axios, @JsonFormat, @JsonIgnore) 동기식 : 여러 작업의 동시 처리가 불가능 비동기식 : 처리가 끝나면 '콜백'이라고 부르는 통보 방식으로, 하나의 작업이 끝날 때까지 기다리지 않고도 여러 작업의 동시 처리가 가능 자바의 람다식 : 자바에서 함수를 파라미터로 전달 -파라미터로 전달되는 콜백을 내부에서 호출하는 방식 자바스크립트의 함수 : 객체와 동일한 일급 객체로 파라미터가 되거나 리턴타입이 가능하다. -함수를 이용해 콜백을 수행할 수 있다. https://ko.javascript.info/callbacks 콜백 ko.javascript.info -Promise : 비동기 호출을 동기화된 방식으로 작성하는 문법 기능 요구사항 댓글 목록 댓글 등록 / 조회 / 수정 / 삭제 댓글 페이지 이동 댓글 처리가 필요한 화면을 작성하기 위한 Axi..
6장-2. 다대일 연관관계를 이용한 댓글 처리 (+ 인덱스, Querydsl, Optional<T>, orElseThrow(), @RestControllerAdvice) 요구사항 다대일 연관관계를 이용한 댓글 CRUD 순서 다대일 연관관계 댓글 처리 구현 다대일 연관관계 PK와 FK를 이용해 연관관계를 표현하는 데이터베이스 연관관계의 방향성을 판단하기 어려운 JPA JPA에서 연관관계 판단 기준 변화가 많은 쪽 기준 회원-게시물 : 게시물 회원-좋아요 : 좋아요 ERD의 FK 기준 참조방식 데이터베이스 : PK를 FK가 참조 JPA : A B와 같은 형태로 서로 참조가 가능한 양방향도 지원 양방향과 단반향 참조 양방향 : 구현은 가능하지만, 관리가 어렵고 에러 발생 가능성이 높아서 웬만하면 사용하지 않도록 한다. 단방향 : 조인 처리를 통해 다른 엔티티를 사용하므로, 불편함이 존재하지만 에러 발생 확률이 적아서 권장 댓글 처리 구현 다대일 연관관계를 이용한 댓글처리 요구..
6장-1. Ajax와 JSON을 이용한 REST 서비스 구현 (+ swagger, BindException, BindingResult, @RestControllerAdvice) 순수한 데이터만 제공하는 서버 사이드 프로그래밍 사용 기술 REST Ajax JSON Swagger RESTful 웹 서비스 (Representational State Transfer) 특정한 URL과 HTTP 메소드를 결합해 '특정한 자원에 특정한 작업'을 지정하는 방식 기존 방식 : URL이 '행위나 작업'을 의미하고, GET/POST가 '데이터를 전송하는 위치'를 의미 Ajax를 이용해 브라우저의 주소 이동없이도 서버와 데이터를 교환하므로, REST 방식 : URL이 '원하는 대상'을 의미, PUT/DELETE가 '행위나 작업'을 의미한다 쿼리 스트링을 이용하지 않고, 직접 주소의 일부로 사용해 하나의 자원을 하나의 주소로 유일무이 표현함으로써, 하나의 URL이 하나의 자원을 식별하는 고유값이 된다..
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 인터페이스 : ..

반응형