Java/Spring Boot 24

[Spring Boot] Boolean 타입이 계속 호출이 안될 때(@Getter)

Lombok 사용 시 boolean 필드 Getter 문제 해결하기Spring Boot 프로젝트에서 Lombok의 @Getter를 사용하면 자동으로 getter 메서드가 생성된다. 하지만 boolean 타입 필드에서는 예상과 다르게 동작할 수 있다.문제 상황@Getter@AllArgsConstructor@NoArgsConstructor@Builderpublic class MedicineCreateRequestDTO { private boolean isPrescribed;}위처럼 boolean 타입 필드에 대해 @Getter를 적용했고서비스에서requestDto.isPrescribed()작성하고 postman에서 json형식으로"isPrescribed": true,이렇게 작성하여 호출하면 isPres..

Java/Spring Boot 2025.02.27

[Spring Boot] RequestBody vs RequestParam vs PathVariable

1. RequestBody클라이언트가 전송한 HTTP 요청의 본문(Body)을 Java 객체로 변환합니다. 일반적으로 JSON 또는 XML 데이터를 수신하는 데 사용한다.@PostMapping("/api/users")public ResponseEntity createUser(@RequestBody User user) { // user 객체를 사용하여 처리 return ResponseEntity.ok(user);}클라이언트가 전송한 JSON 데이터를 User 객체로 변환하여 메서드 매개변수로 전달한다. 이 방식은 POST, PUT, PATCH 요청에서 자주 사용한다.= 사용자가 입력한 값(데이터)2. RequestParamURL 쿼리 매개변수를 메서드 매개변수로 바인딩한다. 주로 GET요청에서 ..

Java/Spring Boot 2024.10.21

[Spring Boot] 페이징(Paging)

1. 페이징(Paging)이란?Paging은 사용자에게 데이터를 제공할 때, 전체 데이터 중의 일부를 보여주는 방식이다. 이 방식은 사용자에게 편히를 줄 뿐만 아니라, 전체 데이터를 로딩할 필요가 없어서 처리 속도가 빨라진다. Spring Data JPA에서 페이징을 쉽게 구현할 수 있는 기능을 제공한다.2. 페이징의 기본 개념페이징은 보통 페이지 번호(page)와 페이지 크기(size) 으로 작동한다.page : 페이지 번호 (0부터 시작)size : 한 페이지 당 데이터 개수3. Spring Data JPA의 페이징 처리Spring Data JPA에서는 Pageable과 Page 인터페이스를 사용하여 페이징 처리를 할 수 있다.Pageable 인터페이스Pageable pageable = PageReq..

Java/Spring Boot 2024.10.19

[Spring Boot] Test Code 작성 + 롬복(LomBok)

1. 테스트 코드 소개1) TDD이란?테스트가 주도하는 개발로 TDD ≠ 단위 테스드(Unit Test) 2) 단위 테스트(Unit Test)란?TTD의 첫 번째 단계인 기능 단위의 데스트 코드를 작성하는 것 3) 테스트 코드의 장점개발단계 초기에 문제를 발견개발자나 나중에 코드를 리팩터링 하거나 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하는지 확인기능에 대한 불확실성을 감소시스템에 대한 실제 문서를 제공2. JUnit를 사용하여 테스트 코드 작성1) 프로젝트 메인 클래스 생성하기package com.jojoldu.book.springboot;import org.springframework.boot.SpringApplication;import org.springframework.boot.au..

Java/Spring Boot 2024.09.12

[Day 18] 웹 페이지에서 댓글 수정하기

1. 댓글 수정의 개요댓글 수정 페이지는 모달 기능을 이용해 만든다.모달(modal)이란?웹 페이지에서 새 창을 띄우는 팝업 창과 달리 같은 웹 페이지 내부에서 상위 레이어를 띄우는 방식으로 사용하는 창이다. 모달 창이 뜨면 기존 창은 비활성 상태가 되고, 모달 창을 종료해야만 원래 화면으로 돌아갈 수 있다.2. 댓글 수정 뷰 페이지 만들기resources > articles > Comments > _list.mustache 코드 추가 실행 결과3. 자바스크립트로 댓글 수정하기트리거 데이터 전달모달 트리거 버튼에 data-*속성을 이용하면 데이터를 모달로 전달할 수 있다.모달 트리거 버튼에 수정할 댓글 정보를 data-* 속성 값으로 저장한다.show.bs.modal 이벤트를 감지해 핸들러에서 모달 트리..

Java/Spring Boot 2024.08.14

[Day 17] 웹 페이지에서 댓글 등록하기

1. 댓글 등록의 개요크게 2가지로 진행된다.댓글 생성 뷰 페이지(_new)에 댓글 입력 폼 만들기[댓글 작성] 버튼을 클릭해 REST API 요청 보내기사용하는 자바스크립트 APIdocument.querySelector(): 웹페잊에서 특정 요소(버튼)를 찾아 반환addEventListener(): 특정 요소에 이벤트가 발생(버튼 클릭)했을 때 특정 동작(댓글 객체 전달)을 수행fetch(): 웹 페이지에서 REST API 요청(POST 요청)을 보낸다.2. 댓글 생성 뷰 페이지 만들기resources > articles > Comments > _new.mustache 코드3. 자바스크립트로 댓글 달기// 해당 id 값을 가진 요소를 찾아 변수에 저장하기자료형 변수명 = document.querySel..

Java/Spring Boot 2024.08.13

[Day 16] 웹 페이지에서 댓글 목록 보기

1. 댓글 보기의 개요댓글의 영역은 크게 2가지로 나뉜다.기존 댓글을 보여주는 댓글 목록 뷰(_list)새 댓글을 입력하는 댓글 생성 뷰(_new)2. 댓글 뷰 페이지 삽입하기resources > articles > Show.mustache 코드 추가 resources > articles > Comments > _comments.mustache 만들기 resources > articles > Comments > _list.mustache 만들기3. 댓글 목록 가져오기controller > ArticleController 코드 추가 실행 결과

Java/Spring Boot 2024.08.13

[Day 15] 댓글 컨트롤러와 서비스 만들기

1. 댓글 REST API의 개요REST 컨트롤러: 댓글 REST API를 위한 컨트롤러로 서비스와 협업, 클라이언트 요청을 받아 응답하며 뷰(View)가 아니 데이터 변환(CommentApiController)서비스: REST 컨트롤러와 리파지터리 사이에서 비즈니스 로직, 즉 처리 흐름을 담당하여 예외 상황이 발생했을 때 @Transactional로 변경된 데이터 롤백(CommentService)DTO: 사용자에게 보여 줄 댓글 정보를 담은 것, 단순히 클라이언트와 서버 간에 댓글 JSON 데이터 전송(CommentDto)엔티티: DB 데이터를 담는 자바 객체로 엔티티를 기반으로 테이블 생성, 리파지터리가 DB 속 데이터를 조회하거나 전달할 때 사용(Comment)리파지터리: 엔티티를 관리하는 인터페이..

Java/Spring Boot 2024.08.12