spring boot 67

[ Spring Boot ] 백엔드 컨트롤러 역할

▣ Controller의 역할Spring에서 Controller는클라이언트(브라우저, 앱, 프론트엔드)로부터 요청을 받음Service 계층을 호출해서 처리이후 응답(ResponseEntity, DTO, JSON 등)으로 돌려주는 계층입니다.즉, 컨트롤러는 외부 세계와 백엔드 서비스의 연결 창구 역할을 합니다.여기에서는파일 저장 : 업로드된 파일을 서버 로컬 디렉토리에 저장합니다. (saveFiles)썸네일 생성 : 이미지면 200x200 사이즈로 썸네일(s_파일명) 자동 생성합니다.파일 읽기 : 저장된 파일을 ResponseEntity 형태로 반환합니다. (getFile)파일 삭제 : 원본 + 썸네일 파일 모두 삭제합니다. (deleteFiles)즉 파일과 관련된 저수준 I/O 처리는 CustomFile..

[ Spring Boot ] 백엔드 서비스 계층

▣ Service 계층이란?Spring 구조에서 보통 이렇게 나뉩니다.Controller → Service → Repository → DBController : HTTP 요청/응답을 처리 (REST API, View 연결)Repository : 실제 DB 쿼리 실행 (JPA, MyBatis 등)Service : 비즈니스 로직 담당 (데이터 가공, 트랜잭션 처리, 복합 로직 관리)즉 Service는 Controller와 Repository의 중간 계층으로, 요청을 처리하는 핵심 로직을 담는 곳입니다.1. 레포지트리 코드 분석@EntityGraph(attributePaths = "imageList")@Query("select p from Product p where p.pno = :pno")Optional ..

카테고리 없음 2025.08.17

[ 77일차 38 ] 수업 정리 - Spring boot

📌 주요 학습 내용1. ProductRepository 기능 확장상품 단건 조회 (selectOne)@EntityGraph(attributePaths = "imageList")로 N+1 문제 해결JPQL로 pno 기준 단일 상품과 이미지 목록 함께 조회@EntityGraph(attributePaths = "imageList")@Query("SELECT p FROM Product p WHERE p.pno = :pno")Optional selectOne(@Param("pno") Long pno);상품 논리 삭제 (updateToDelete)@Modifying 사용delFlag를 true로 업데이트@Modifying@Query("UPDATE Product p SET p.delFlag = :flag WHERE..

국비 2025.08.08

Spring Boot 38강 - Product 리스트/상세 조회, 수정/삭제 서비스 계층 도입

이번 글에서는 상품 도메인에 대해 리포지토리 쿼리 최적화(EntityGraph, JPQL), 서비스 계층 도입, 그리고 컨트롤러 연동까지 진행했습니다.파일 업로드/썸네일과 결합된 상품의 등록·조회·수정·삭제(soft delete 포함) 흐름을 서비스 계층으로 정리하고, 테스트를 통해 검증합니다.📦 ProductRepositoryTests (읽기/수정/삭제 테스트)// 1) 즉시 로딩 없이 기본 findById로 조회@Test@Transactionalpublic void testRead() { Long pno = 1L; Optional result = productRepository.findById(pno); Product product = result.orElseThrow(); l..

[ 76일차 37 ] 수업 정리 - Spring Boot

📌 주요 학습 내용1. 썸네일 라이브러리 추가build.gradle에 thumbnailator 의존성 추가implementation 'net.coobird:thumbnailator:0.4.19'업로드된 이미지의 썸네일 자동 생성을 위해 사용2. CustomFileUtil 기능 확장saveFiles()이미지 파일 판별(contentType.startsWith("image"))원본 파일 저장 후, 200x200 크기의 썸네일(s_파일명) 생성Thumbnails.of(savePath.toFile()).size(200, 200).toFile(thumbnailPath.toFile());getFile()파일을 Resource로 읽어 브라우저에 반환존재하지 않으면 기본 이미지(Test.PNG) 제공Content-T..

국비 2025.08.08

Spring Boot 37강 - 상품 이미지 썸네일 생성과 파일 관리

이번 글에서는 상품 이미지 관리 기능을 구현했습니다.이미지 업로드 시 썸네일 자동 생성, 업로드된 파일의 조회 및 삭제 기능, 그리고 상품 이미지 정보를 저장할 엔티티 설계까지 진행했습니다.📦 build.gradle 수정 (썸네일 생성 라이브러리 추가)implementation 'net.coobird:thumbnailator:0.4.19'🔸 Thumbnailator 라이브러리는 이미지 파일의 썸네일을 쉽게 생성할 수 있도록 도와줍니다.📦 CustomFileUtil.java (파일 저장, 썸네일 생성, 조회, 삭제)public List saveFiles(List files) { if (files == null || files.isEmpty()) return List.of(); List up..

[ 75일차 36, 8 ] 수업 정리 - Spring Boot, React

📌 주요 학습 내용 정리1. ✅ ModifyComponent 기능 구현getOne(tno)로 기존 데이터를 불러와 수정 화면 구성제목, 날짜, 완료 여부 수정 가능putOne(todo)로 수정, deleteOne(todo)로 삭제 가능처리 결과를 ResultModal을 통해 사용자에게 알림완료 후 목록 페이지 또는 상세 페이지로 이동if(result === '삭제성공') moveToList()else moveToRead(tno)2. ✅ ProductDTO 클래스 생성상품 정보(tno, pname, price, pdesc, delflag)와파일 리스트(files, uploadFileNames)를 포함Lombok의 @Builder.Default로 리스트 초기화3. ✅ application.propertie..

국비 2025.08.05

Spring Boot 36강 - 파일 업로드 기능 구현과 설정

이번 글에서는 Spring Boot 기반 프로젝트에서 파일 업로드 기능을 구현하는 방법을 학습했습니다.업로드할 파일을 받기 위한 DTO 작성부터, 서버에 파일을 저장하는 유틸리티 클래스, 관련 설정 및 컨트롤러 구현까지 실제 애플리케이션에서 많이 쓰이는 기능을 실습해보았습니다.📦 ProductDTO.java@Data@Builder@NoArgsConstructor@AllArgsConstructorpublic class ProductDTO { private Long tno; private String pname; private int price; private String pdesc; private boolean delflag; @Builder.Default priva..

[ 70일차 33~35, 6 ] 수업 정리 - Backend, Frontend

70일차 수업 요약: Todo 목록 API 구축 및 클라이언트 호출 준비🔧 1. TodoService 인터페이스 확장페이징 기반 조회 메서드 추가PageResponseDTO list(PageRequestDTO pageRequestDTO);⚙️ 2. TodoServiceImpl 페이징 구현Pageable 객체를 생성하여 findAll 사용ModelMapper로 Todo → TodoDTO 변환총 게시물 수와 페이지 정보 포함한 PageResponseDTO 반환public PageResponseDTO list(PageRequestDTO pageRequestDTO) { Pageable pageable = PageRequest.of( pageRequestDTO.getPage() - 1, ..

국비 2025.07.25
반응형