목록Spring Boot project (5)
도슐랭스타

사용자가 요청을 처리함[사용자 클릭] → [Controller] → [Service] → [Repository] → [DB 저장]ReadingRecordController.javapackage me.dodo.readingnotes.controller;import me.dodo.readingnotes.domain.ReadingRecord;import me.dodo.readingnotes.service.ReadingRecordService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import java.util.List;@RestController@Req..
Controller(요청 받는 곳)와 Repository(DB와 연결되는 곳) 사이에서 실제 로직을 처리하는 역할.ex. "책을 저장하되, 제목이 없으면 저장하지 마!" 같은 유효성 검사도 여기서 처리함.Service를 왜 만드냐?비즈니스 로직(Service)와 DB 로직(Repository)를 분리할 수 있음.비즈니스 로직(Service) - 유효성 검사, 수량 확인 등DB 로직(Repository) - DB에 저장구조장점 단점Controller → Repository빠르게 구현, 간단로직이 섞이면 복잡해짐Controller → Service → Repository유지보수 좋고 재사용 가능코드 구조가 조금 더 복잡해짐ReadingRecordService.javapackage me.dodo.reading..
Repository는 JPA가 제공하는 '자동 DAO(데이터 접근 객체)'DAO(Data Access Object) - 실제 DB에 접근하여 CRUD하는 객체ReadingRecordRepository.javapackage me.dodo.readingnotes.repository;import me.dodo.readingnotes.domain.ReadingRecord;import org.springframework.data.jpa.repository.JpaRepository;public interface ReadingRecordRepository extends JpaRepository { // 필요하면 여기에 커스텀 쿼리도 작성}public interface ReadingRecordRepository ..
DB와 매핑될 클래스 생성.POST로 받을 책 내용들 저장하는 구조.파일 위치src/main/java/your_package_name/domain/ReadingRecord.javadomain은 모델 객체를 넣는 일반적인 디렉터리명임.ReadingRecord.javapackage me.dodo.readingnotes.domain;import jakarta.persistence.*;import java.time.LocalDate;@Entity //이 클래스가 JPA 엔티티임을 선언. DB 테이블과 매핑됨@Table(name = "reading_record") //DB에서 이 엔티티가 매핑될 테이블 이름을 지정함public class ReadingRecord { @Id //이 필드(id)가 **기본 키(..
maven이 아니라 gradle로 하려고 다시 프로젝트 생성함.웹org.springframework.boot:spring-boot-starter-webJPAorg.springframework.boot:spring-boot-starter-data-jpa테스트org.springframework.boot:spring-boot-starter-test개발툴org.springframework.boot:spring-boot-devtools개발용 DBcom.h2database:h2라이브러리는 이렇게 사용.이해하기 어려워지는 것 같아서 라이브러리 일단 몇 개 줄임.(필요하면 나중에 추가 예정)