본문 바로가기

패스트캠퍼스/50일의 기적 AI 환급반

패스트캠퍼스 환급챌린지 18일차 : 대규모 채팅 플랫폼으로 한 번에 끝내는 실전 대용량 트래픽 커버 완전판 강의 후기

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://fastcampus.info/4n8ztzq

 

 

안녕하세요 :)

오늘은 "50일의 기적 AI 환급반_ 대규모 채팅 플랫폼으로 한 번에 끝내는 실전 대용량 트래픽 커버 완전판 " 챌린지에 도전하는 열여덟번째 날입니다.

 

열일곱번째 날에는 왜 MySQL을 선택했나. RDB와 NoSQL의 차이는 무엇인가에 대해 배웠었는데요. 오늘은 과연 어떤 내용들을 배울 수 있을지 공부하고 포스팅 하도록 하겠습니다.

 

 

오늘 학습할 내용의 제목은,

Part 3. 채팅 서비스 핵심 기능 개발 > Ch 1. 대화 기록 저장을 위한 데이터베이스 연동 >

03. 왜 JPA를 선택했나 ORM과 SQL Mapper의 차이는 무엇인가

입니다.


🔗 왜 JPA를 선택했나? ORM과 SQL Mapper의 차이는 무엇인가?

  • 이번 포스팅에서는 우리가 왜 JPA를 선택했는지, ORM과 SQL Mapper의 차이는 무엇인지 구체적으로 정리해보려 합니다.
  • 백엔드 개발에서 데이터베이스와 소통하는 방식은 다양합니다. 직접 SQL을 쓰기도 하고, MyBatis 같은 SQL Mapper를 쓰거나, 요즘에는 JPA나 Hibernate 같은 ORM 프레임워크도 많이 사용하죠.
  • 이번 포스팅에서는 우리가 왜 JPA를 선택했는지, ORM과 SQL Mapper의 차이는 무엇인지 구체적으로 정리해보려 합니다.

 

🧭 ORM(Object-Relational Mapping)이란?

  • ORM은 객체와 관계형 데이터베이스를 자동으로 매핑해주는 기술입니다.
  • 즉, 자바의 클래스와 DB의 테이블을 1:1로 연결해서 객체를 조작하면 자동으로 SQL이 생성되고 실행되도록 도와줍니다.

✅ 주요 특징

  • SQL을 직접 작성하지 않아도 데이터베이스 조작 가능
  • 엔티티(Entity) 객체 중심의 개발 방식
  • DB와의 의존성이 낮아지고 유지보수가 쉬움
  • JPA, Hibernate 등이 대표적인 ORM 구현체

 

📄 SQL Mapper란?

  • SQL Mapper는 SQL을 직접 작성하지만, 그 결과를 객체와 자동 매핑해주는 도구입니다. MyBatis가 대표적인 프레임워크죠.

✅ 주요 특징

  • SQL을 직접 작성 → 복잡한 쿼리 컨트롤 가능
  • DB 중심의 사고가 필요한 개발 방식
  • 매핑은 자동이지만, 로직은 수동으로 작성해야 함
  • SQL 유지보수가 번거로울 수 있음

 

⚖️ ORM vs SQL Mapper: 무엇이 다른가?

구분 ORM (JPA, Hibernate 등) SQL Mapper (MyBatis 등)
SQL 작성 필요 없음 (자동 생성) 직접 작성해야 함
개발 방식 객체 중심 SQL 중심
유지보수 도메인 코드 위주, 일관된 로직 SQL 변경 시 많은 수작업
학습 난이도 러닝 커브 있음 비교적 쉬움
복잡한 쿼리 상대적으로 불편 자유롭고 명확함
대표 사용처 도메인 주도 설계, 엔터프라이즈 앱 데이터 중심 시스템, 보고서 시스템 등

 

 

✅ 우리가 JPA를 선택한 이유

  • JPA를 선택한 데에는 명확한 기술적, 설계적 이유가 있습니다.

1️⃣ 도메인 주도 설계(Domain-Driven Design)에 적합

  • 우리 프로젝트는 비즈니스 로직 중심의 설계가 중요합니다.
  • JPA는 엔티티 중심으로 로직을 구성하므로 도메인 모델을 자연스럽게 반영할 수 있습니다.

2️⃣ 반복적인 SQL 코드 제거

  • CRUD 작업에 반복되는 SQL이 많았는데, JPA 덕분에 기본적인 쿼리는 거의 생략 가능합니다.
  • save, findById, delete 등은 자동으로 제공됩니다.

3️⃣ 연관 관계 처리의 간결함

  • 엔티티 간 연관 관계 설정(@OneToMany, @ManyToOne 등)이 직관적이어서
    복잡한 JOIN 쿼리를 작성하지 않아도 됩니다.

4️⃣ 트랜잭션 관리와 캐싱

  • JPA는 영속성 컨텍스트를 통해 객체 상태를 자동 감지하고
    변경 감지를 통해 자동으로 SQL을 생성합니다.
  • 1차 캐시와 트랜잭션 관리를 활용해 성능 최적화가 용이합니다.

 

📌 물론 JPA도 단점은 있다

  • JPA가 모든 프로젝트에 맞는 것은 아닙니다. 복잡한 통계성 조회나, SQL 튜닝이 필요한 상황에서는 직접 SQL을 컨트롤할 수 있는 MyBatis가 유리합니다.
  • 또한, 초기 러닝 커브가 있으며, 객체 상태 변화(Detached, Persistent 등)에 대한 이해가 필요합니다.

 

  • 기술 선택의 핵심은 문제 해결에 가장 적합한 도구가 무엇인가 라고 생각합니다. ORM이 무조건 좋고, SQL Mapper는 무조건 구식이라는 시각은 위험합니다.
  • 하지만 이번 프로젝트에서 선택한 JPA는 객체 중심 설계와 잘 맞고, 반복적인 SQL을 줄여 생산성을 높이며, 유지보수성과 확장성까지 고려한 전략적 선택이라고 보여집니다. 결국 중요한 건 도구를 잘 이해하고, 우리의 문제 상황과 맞닿아 있는지를 판단하는 힘이라고 생각합니다.