TIL 85 - [ Spring 최종 프로젝트 ( Day 21 ) - Category, Difficulty 리팩토링 ]

2025. 6. 26. 22:17·[내일배움캠프-Sparta]/Spring 6기
반응형

Category 부분에서 요구사항이 들어와서 수정하는 시간을 가졌다.

 

중간 테이블 생성해서 하는 방식으로 @OneToMany, @ManyToOne 방식으로 하기로 하였으나, 이미 짜여있고 Enum으로 쓰고 있는 결합이 되었는 로직이 많이 있고, 그리고 발표회 날까지 시간이 부족해서 해당 방법은 하지 않기로 함. ( 이래서 설계부터가 가장 중요하다는걸 느꼈다. )

🌈 @ElementCollection

처음 보는 어노테이션을 사용하였다.

이 어노테이션은 엔티티에 PK를 받지않는다. ( 미니 Entity를 만든다는 느낌이다. )

그래서 따로 중간 테이블을 쓰지않고, join 컬럼을 해서 간편하게 사용할수 있다. 

 

참고로, @CoollectonTable은 우리가 수동으로 설정해주는 기능일뿐이지, 없어도 자동으로 기능할수 있게 해준다.

 

이렇게 해놓으면 DB에서는 ( problem_categories ) 라는 테이블을 생성한다. 

확장성을 고려하지 않는다면 이러한 방법도 좋다. ( 특히, 테이블을 생성해서 하나의 필드만 사용하고 있는 경우 등.. )

❓ Difficulty

카테고리를 리팩토링 하면서 발견하게 되었다.

Difficulty가 Problem 엔티티내에서, 데이터 타입이 String difficulty로 되어 있었다. 이렇게 되어있으면 실제 Enum값을 사용하지 않아서 문제가 생긴다. 그래서 Diffuclty difficulty 로 바꿔서 하였다.

변화된 문제 등록 JSON

{
    "categories" : ["FOR_BEGINNER", "MATH"],
    "title" : "A+B",
    "description" : "입력한 두수의 값을 더하고, 결과값을 출력하세요",
    "difficulty" : "LV1",
    "memoryLimit" : 30000,
    "timeLimit" : 1000,
    "reference" : "ORIGINAL"
}

JSON 코드의 변화가 생겼다.

 

카테고리는 이제 리스트 형태로 해서, Enum에 등록되어있는 데이터로 여러개 이상 매핑하게 하여서 작성할수있고,

Difficulty는이제 키 데이터를 제대로 입력해주어야 한다.

반응형

'[내일배움캠프-Sparta] > Spring 6기' 카테고리의 다른 글

TIL 87 - [ Spring 최종 프로젝트 ( Day 23 ) - 문제 조회 성능 최적화 ]  (0) 2025.06.30
TIL 86 - [ Spring 최종 프로젝트 ( Day 22 ) - S3 문제 이미지 수정/삭제 기능 구현 ]  (0) 2025.06.28
TIL 84 - [ Spring 최종 프로젝트 ( Day 20 ) - S3 문제 이미지 기능 구현, contextLoads() 에러 ]  (0) 2025.06.25
TIL 83 - [ Spring 최종 프로젝트 ( Day 19 ) - S3 문제 이미지 기능 구현, 브로셔 작업 ]  (0) 2025.06.24
TIL 82 - [ Spring 최종 프로젝트 ( Day 18 ) - S3의 잘못된 사용, 기능 구현 ]  (0) 2025.06.23
'[내일배움캠프-Sparta]/Spring 6기' 카테고리의 다른 글
  • TIL 87 - [ Spring 최종 프로젝트 ( Day 23 ) - 문제 조회 성능 최적화 ]
  • TIL 86 - [ Spring 최종 프로젝트 ( Day 22 ) - S3 문제 이미지 수정/삭제 기능 구현 ]
  • TIL 84 - [ Spring 최종 프로젝트 ( Day 20 ) - S3 문제 이미지 기능 구현, contextLoads() 에러 ]
  • TIL 83 - [ Spring 최종 프로젝트 ( Day 19 ) - S3 문제 이미지 기능 구현, 브로셔 작업 ]
dimenshun
dimenshun
한 소년의 개발 일기
    반응형
  • dimenshun
    Dev Life Notes
    dimenshun
  • 전체
    오늘
    어제
    • 분류 전체보기 (268)
      • CS (23)
        • 자료구조 (0)
        • 알고리즘 (0)
        • 컴퓨터 구조 (8)
        • 네트워크 (6)
        • 운영체제 (3)
        • DB ( + SQLD ) (5)
        • SW공학 (1)
      • 프로그래밍 (3)
        • Java (0)
        • Spring (0)
        • HTML,CSS (3)
        • JavaScript (0)
      • 개발 툴 (7)
        • Git(버전관리) (1)
        • Docker (3)
        • AWS (2)
        • JSP (1)
      • 코딩테스트(Algorithm) (125)
        • 백준 (6)
        • 프로그래머스 (119)
      • [내일배움캠프-Sparta] (110)
        • Spring 6기 (106)
        • KPT 회고 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    It
    OS
    Python
    내일배움캠프
    웹
    Testcode
    Java
    메모리
    web
    백엔드
    AWS
    운영체제
    트랜잭션
    docker
    spring
    알고리즘
    컴퓨터구조
    개발자
    SQL
    KPT
    network
    배포
    코딩테스트
    cs
    SQLD
    db
    Til
    세션
    네트워크
    CPU
  • hELLO· Designed By정상우.v4.10.3
dimenshun
TIL 85 - [ Spring 최종 프로젝트 ( Day 21 ) - Category, Difficulty 리팩토링 ]
상단으로

티스토리툴바