[Spring 실습] 점심 추천 & 투표 서비스 만들기 v1

2025. 10. 27. 21:02·Spring/Spring 실습

☠️ 트러블 슈팅

발생한 Issue 

  • 1. Mybatis ↔︎ JPA 로의 전환 과정에 대한 개념 이해가 필요했음
    • 왜 이렇게 수정해야하며 어떤 기능을 대체하는 것인가?
  • 2. Mapper → Repository 로의 전환 과정에서 놓치지 말아야 할 부분이 무엇인지 확실하지 못했음
    • 기존에 사용되었던 RoundTodayRounds() 와 getRound의 개념을 이해해야 했음
    • 왜 메서드네이밍으로 구현하지 못하고 JPQL로 처리해야하는지에 대한 이해가 부족했음 

해결방법 / 찾아본 내용

  • 1. MyBatis ↔︎ JPA의 차이 정리
    • MyBatis는 SQL이 중심, JPA는 엔티티 가 중심 (생산성 및 일관성을 향상시키는 장점을 가지게 됨)
      → XML 매퍼/Mapper 인터페이스를 @Entity + Repository로 바꾸는 과정이 필요
    • DB 생성은 MyBatis에서 JPA로 수정하기 이전에 생성했으므로 ddl-auto=validate로 검증만 우선 진행이 필요
    •  
  • 2. MyBatis → Jpa로 사용할 수 있는 데이터 접근 방식은 아래와 같음
    • 메서드 이름 기반 쿼리
    • JPQL(Java Persisence Query Language)
    • Native SQL
    • Criteria API
    • QueryDSL

각 접근방식을 표로 정리하자면

방식 작성 난이도 유지보수성 성능 동적 쿼리 특징
메서드 네이밍 ★☆☆ ★★★ ✅ ❌ 단순 조건에 최적
JPQL ★★☆ ★★☆ ✅ ❌ SQL 없이도 엔티티 중심으로 join 가능
Native SQL ★★☆ ★☆☆ ✅ ⭕ DB 의존적, 복잡 쿼리 대응
Criteria API ★★★ ★★☆ ✅ ⭕ 코드 기반 JPQL 생성 (복잡함)
QueryDSL ★★☆ ★★★ ✅ ⭕⭕ 실무 표준, 타입 안전, 유지보수 좋음

위와 같이 정리할 수 있었고 

 

이번 과정에서 선택해야 하는 기준은 

  • 간단한 CRUD / 조건 1~2개 → 메서드 이름 기반
  • 조인, 필터, DTO 반환 등 복잡도가 어느정도 있을 때 → JPQL (@Query)
  • 복잡한 검색, 조건이 많거나 필터링 다양한 경우 → QueryDSL
  • DB 특화 함수/쿼리 필요한 경우 → Native SQL 

로 정리할 수 있었고 JPQL을 사용하여 전환하는 과정이 필요함을 알게 되었다 .

'Spring > Spring 실습' 카테고리의 다른 글

[프로젝트] 포인트 기반 결제 시스템 프로젝트 회고  (0) 2025.11.28
[Spring 실습] 이커머스 백오피스 프로젝트  (0) 2025.11.03
[Spring 실습] 점심 추천 & 투표 서비스 만들기 V2  (0) 2025.10.29
[Spring 실습] 강의 내용 진행 중 문제점 정리  (0) 2025.10.21
[Spring] 일정 관리 앱 만들기  (0) 2025.10.20
'Spring/Spring 실습' 카테고리의 다른 글
  • [Spring 실습] 이커머스 백오피스 프로젝트
  • [Spring 실습] 점심 추천 & 투표 서비스 만들기 V2
  • [Spring 실습] 강의 내용 진행 중 문제점 정리
  • [Spring] 일정 관리 앱 만들기
stark77
stark77
하마의 IT 자기개발 이모저모, 백엔드 개발자로 거듭나기
  • stark77
    하마의 개발자 성장일기
    stark77
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 컴퓨터구조와 운영체제
        • 컴퓨터구조
        • 운영체제
      • SQL 기초
      • Spring
        • 백엔드 기초
        • Spring 실습
      • JAVA
        • Java 실습
      • HTML&CSS
        • HTML&CSS 실습
      • Git&GitHub
        • Git&GitHub 실습
      • 내배캠 끄적끄적
        • Today I Learned
      • 유용한 툴 및 사이트 정리
      • 취미
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    실시간 데이터 처리
    웹소켓
    Github
    Java 문법기초
    git
    algorithm
    Spriingboot
    BEAN
    Stomp
    MVC
    네트워크 기초
    경합조건과 교착상태
    프로세스와 쓰레드
    백엔드 기초다지기
    다형성
    WebSocket
    HTML&CSS
    for문
    java
    JPA
    객체지향
    thymleaf
    String.format
    Til
    jsp
    객체지향프로그래밍
    백엔드 기초
    Spring
    RestTemplate
    SpringSecurity
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
stark77
[Spring 실습] 점심 추천 & 투표 서비스 만들기 v1
상단으로

티스토리툴바