본문 바로가기

PROJECT8

README 파일 첨부용 이미지 2025. 2. 25.
순환참조 해결을 위한 중간 서비스 활용 프로젝트의 성능을 향상시키기 위해 도메인 사이의 연관 관계를 정리하고SRP를  지키면서 소스코드를  작성하던 중 순환참조 문제가 발생하였다. 문제가 발생한 부분은 내가 작성하던  ReviewService 부분이었고리뷰를 작성하기 위한 제약 조건으로 '주문이 완료된 상태여야 한다' 라는 조건을 추가하였다. 처음엔 Order 엔티티의 ID 값을  Request에 전달받기 때문에OrderService를  호출하여 해당 주문의 상태를 판단하고 예외처리를 진행할 예정이었다. 여기서 간과한 점이 OrderService는 프로젝트의 메인 기능이었기 때문에 다양한 Service의 의존성을 주입받는 상태였다.비록 ReviewService를 주입받고 있지는 않았지만 RestaurantService를 주입받고 있었고,Res.. 2025. 2. 25.
RESTful한 API 설계는 무엇일까(With. 자바의 단일 책임 원칙) 의문 발생 팀 프로젝트를 진행하면서 내가 담당한 부분에 대한 의문이 발생하였다.해당 소스 코드 부분은 이렇다.// 메뉴 단일 조회@GetMapping("/{menuItemId}")public ResponseEntity searchMenuItem(@PathVariable UUID menuItemId) { return menuItemService.searchMenuItem(menuItemId);}// 레스토랑의 메뉴 전체 조회@GetMappring("/{restaurantId}")public ResponseEntity> searchMenuItemByRestaurant(@PathVariable UUID restaurantId){ return menuItemService.searchMenuItembyRes.. 2025. 2. 14.
ResponseDto 페이지 응답 프로젝트를 진행하면서 응답은 어떤 형식으로 진행할 지에 대한 회의를 진행하였다.이전 TableQ 프로젝트에서 진행했던 Header 형식을 예시로 설명했고 (모두가 아는 방식이 다르기 때문에) 팀원의 추가적인 이해를 돕기 위해 예시 소스코드를 작성하였다.PAGE-TEST PROJECT// Info.java@Builder@Getter@Setter@Entity(name="p_info")@NoArgsConstructor@AllArgsConstructorpublic class Info { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private Strin.. 2025. 2. 14.
제네릭 관련 코드 수정 피드백 Note: C:\Users\user\Desktop\Project\TravelTogether\src\main\java\me\jeongwook\jplan\dto\Header.java uses unchecked or unsafe operations.Note: Recompile with -Xlint:unchecked for details. 위와 같은 경고가 나타나서 찾아봤다. 안전하지 않은 작업이 포함된 코드가 발견되면 나타나는데 아래 같은 문제가 원인이 될 수 있다.1. 제네릭 타입 정보를 명시하지 않거나, 컴파일러가 타입 안정성을 보장할 수 없는 경우 발생한다.2. 타입 캐스팅이 명확하지 않거나 제네릭을 사용하지 않을 때 발생할 수 있다.3. 제네릭을 지원하지 않는 경우 발생할 수 있다. package me.. 2025. 1. 18.
데이터베이스 생성, 수정 자동 매핑 @MappedSuperclass@EntityListeners(AuditingEntityListener.class)@Getterpublic abstract class AuditableEntity { @CreatedDate @Column(updatable = false, nullable = false) protected LocalDateTime createdAt; @LastModifiedDate @Column(insertable = false) protected LocalDateTime lastModifiedAt; @CreatedBy @Column(updatable = false, nullable = false) protected String createdBy.. 2025. 1. 14.