전체 글

전체 글

    [05] 유스케이스, 플로우차트

    [05] 유스케이스, 플로우차트

    API를 얼추 만들어가고 있는데 내가 간과한 것이 있다.. 프론트엔드 없이 백엔드 서버만 만든다는 생각으로 개발을 시작했는데프론트단.. 즉 유스케이스나 플로우차트를 미리 기획하지 않으면 API를 만들 때 혼란이 온다는 것. 팀 프로젝트를 진행할땐 다같이 프론트단을 디자인하면서어느정도 유스케이스와 플로우차트가 만들어지고 숙지한 채로 시작하는데나 혼자하는 프로젝트에서 무작정 백엔드 서버부터 만드려했더니 그런 과정이 생략되어 버렸다.조금 늦었지만 뒤늦게 만들어봤다. 1. 가게주인 (Shop Owner, 예약을 받는 사람)회원가입 (Sign Up)유스케이스: 가게주인은 회원가입을 통해 시스템에 등록된다.행위자: 가게주인목표: 시스템에 가입하고 자신의 shop을 등록할 수 있도록 하기.로그인 (Login)유스케이..

    [04] DTO 사용하기 (양방향 관계에서 순환 참조 해결)

    [04] DTO 사용하기 (양방향 관계에서 순환 참조 해결)

    문제 상황)Shop에 대하여 Slot를 생성했더니 이렇게 순환참조가 이뤄졌다.양방향으로 설정해뒀더니 Slot 이 Shop을, 또 Shop이 Slot 을 무한 참조하는 것이다..찾은 해결 방법)① 양방향이 아니라 단방향으로 수정.→ Shop에서 Slot을 수정하거나 조회하는 등의 관리를 해야하고,영속성 전이도 필요하기 때문에 단방향으로 수정은 안될 것 같다.  ② @JsonIgnore③ @JsonManagedReference & @JsonBackReference→ 두 방법 모두 이렇게 응답에 아예 포함되지 않는다. 실제 해결 방법)위 방법도 괜찮겠지만 나는 아이디나 생성일과 수정일도 응답에 넘겨주고싶지않다.그래서 DTO을 만들어 활용하기로 결정했다.위와 같이 내가 보내주고 싶은 정보만 보내줄 수 있게 됐다..

    [Spring] Auditing이란? 코드에 적용하는 법 (@CreatedDate이 null일 때)

    [Spring] Auditing이란? 코드에 적용하는 법 (@CreatedDate이 null일 때)

    문제 상황 )@CreatedDate, @LastModifiedDate을 사용해도 값이 null. 찾아본 해결 방법 )Application에 @EnableJpaAuditing를 사용하여 JPA Auditing을 활성화.해당 엔티티에 @EntityListeners(AuditingEntityListener.class)를 사용. 실제 해결 방법 )위와 동일.그러나 생성일, 수정일이 모든 엔티티에 존재하기에 따로 클래스를 만들어 엔티티들이 상속받도록 함. 이 포스팅에선 Auditing에 대한 Spring 문서를 참고했습니다! Auditing :: Spring Data JPASpring Data provides sophisticated support to transparently keep track of who c..

    API 응답에 대한 고민

    Reserve Me 프로젝트를 진행하며 RESTful한 API 설계에 대해 많이 고민했다.일관된 응답 포맷을 유지하기 위해 ResponseDTO에 대해서 알아보던 중 CRUD에 따른 ResponseDto를 보내는 유형 및 Respo... - 인프런 | 커뮤니티 질문&답변누구나 함께하는 인프런 커뮤니티. 모르면 묻고, 해답을 찾아보세요.www.inflearn.com인프런의 요니님이 작성한 이 질문글을 보게 되었다.나도 개발을 하면서 한번쯤 고민해봤던 문제라 아카이빙.. 김영한님 답변에서우리가 API 디자인을 할 때 중요하게 생각해야 하는 부분이 있습니다.바로 API를 사용하는 클라이언트의 입장을 적극 고려해야 하는 부분입니다. 이 내용이 전체 답변의 내용을 관통한다고 느꼈다.'API를 사용하는 클라이언트'..

    [03] 기본적인 Entity, Repository, Service, Controller 생성하기

    우선 가장 간단하게다른 엔티티와 아무 관계도 갖지 않는다고 생각하고shop이라는 도메인에 관해 Entity, Repository, Service, Controller를 생성해보자. 기능으로는 등록, 전체 조회, 상세 조회, 삭제를 만들었다.수정은 나중에 dto를 만들면서 구현할 예정이다. 1. Entitypackage com.dyn.reserveme.entity;import jakarta.persistence.Entity;import jakarta.persistence.GeneratedValue;import jakarta.persistence.GenerationType;import jakarta.persistence.Id;import lombok.Getter;import lombok.NoArgsConst..

    [01] Spring Boot 프로젝트 세팅

    [01] Spring Boot 프로젝트 세팅

    https://start.spring.io SpringBoot 3.0부터는 JAVA 17이상만을 지원. 깃허브에 초기 프로젝트 push.DB 연결.

    [00] 프로젝트 기획, ERD, API 설계, 패키지 구조

    [00] 프로젝트 기획, ERD, API 설계, 패키지 구조

    1. 기획심플한 예약 시스템을 만들 계획이다.네일샵 등의 소상공인, 동아리 등 조직 내에서 스터디룸을 예약하는 등 간편하게 이용할 수 있다. 혼자 할 수 있는 범위 안에서 너무 욕심부리지 않으면서 차근차근 진행하고싶다. 2. ERD가장 고민이 되는 부분인데.. 예약이라는 게 형태가 아주 다양하다.일단 가게에서 가능한 예약 슬롯을 만들면 1개의 슬롯에 1개의 예약이 가능하도록 생각했다.3. API 설계3-1. Shop (가게)MethodEndpointDescriptionRequestResponsePOST/api/shops등록name, description, address, phone, ownerName201 Created (shop 정보)GET/api/shops/{shopId}상세 조회shopId200 O..

    02 Springboot에서 HATEOAS 적용하기 (feat. 페이지네이션)

    02 Springboot에서 HATEOAS 적용하기 (feat. 페이지네이션)

    Springboot에서 pageable를 이용한 api를 만들고 vue.js에서 페이지네이션 컴포넌트를 개발했다. 페이지를 넘기기 위해 중복적으로 검색 api를 부르는 것보다 hateoas를 이용해서 바로 link를 전달받으면 좋지 않을까? 라는 생각을 자연스럽게 하게 되었다. ㅎㅎ https://docs.spring.io/spring-hateoas/docs/current/reference/html/ Spring HATEOAS - Reference Documentation Example 46. Configuring WebTestClient when using Spring Boot @SpringBootTest @AutoConfigureWebTestClient (1) class WebClientBasedTe..