본문 바로가기

분류 전체보기51

예약 리스트 조회 API 최적화 엔티티를 DTO로 변환@GetMapping("/api/v2/reserves")public List reserveV2(){ List reserves = reserveRepository.findAllByString(new ReserveSearch()); List collect = reserves.stream() .map(r -> new ReserveDto(r)) .collect(Collectors.toList()); return collect;}...@Datastatic class ReserveDto{ private Long reserveId; private String name; private LocalDateTime reserveDa.. 2024. 11. 3.
예약 리스트 조회 API 순환참조 해결 순환참조참조하는 대상이 서로 물려 있어 참조할 수 없게 되는 현상JPA에서 양방향으로 연결된 엔티티를 그대로 조회하는 경우, 서로의 정보를 순환하면서 조회하다가 stackoverflow 발생엔티티 직접 노출 AS-IS@Entity@Getter@Setter@NoArgsConstructor(access = AccessLevel.PROTECTED)public class ReserveShop { @Id @GeneratedValue @Column(name = "reserve_shop_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "reserve_id") // FK 설정, 연관관계 주인 p.. 2024. 10. 29.
예약 조회 API 개발 엔티티 직접 노출@GetMapping("/api/v1/simple-reserves")public List reserve1(){ List all = reserveRepository.findAllByString(new ReserveSearch()); for (Reserve reserve : all) { reserve.getMember().getName(); // Lazy 강제 초기화 } return all;}엔티티를 직접 노출하는 것은 좋지 않음엔티티를 DTO로 변환@GetMapping("/api/v2/simple-reserves")public List reserveV2(){ List reserves = reserveRepository.findAllByString(ne.. 2024. 10. 24.
회원 관련 API 개발 회원 등록 API1. 엔티티를 Request Body에 직접 매핑(요청 값으로 엔티티를 직접 받는 경우)@Entity@Getter@Setterpublic class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; @NotEmpty private String name; private String phone; @Embedded private Address address; @OneToMany(mappedBy = "member") private List reserves = new ArrayList();}@PostMapping("/api/v1/members")public .. 2024. 10. 17.
설계 엔티티 설계기능 설계회원 기능    회원 등록    회원 조회업체 기능    업체 등록    업체 수정    업체 조회예약 기능    예약 등록    예약 수정    예약 조회    예약 취소기타 요구사항    업체는 예약된 시간에 이용가능 차량 초과 시 예약 불가    업체에 예약 가능한 서비스는 오픈형(openShop), 프라이빗형(privateShop) 존재    업체를 TYPE으로 구분(DiscriminatorColum) 2024. 9. 20.
프로토타입 스코프 빈 스코프스코프는 빈이 존재할 수 있는 범위를 뜻함스프링은 다음과 같은 스코프를 지원   싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프   프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하는 매우 짧은 범위의 스코프   웹 관련 스코프 : request, session, apllication프로토타입 스코프프로토타입 스코프의 빈을 스프링 컨에티너에 요청스프링 컨테이너는 이 시점에 프로토타입 빈을 생성하고, 의존관계 주입스프링 컨테이너는 생성한 프로토타입 빈을 클라이언트에 반환이후 스프링 컨테이너에 같은 요청이 오면 항상 새로운 프로토타입 빈을 생성해서 반환Testpublic class PrototypeTest { @Tes.. 2024. 9. 1.