본문 바로가기

전지적라온시점

Spring에서의 데이터베이스 연동 완벽 가이드 (JDBC, JPA, MyBatis 비교) 본문

Development/Spring

Spring에서의 데이터베이스 연동 완벽 가이드 (JDBC, JPA, MyBatis 비교)

최라온 2025. 5. 16. 18:14
728x90
반응형
SMALL

Spring에서의 데이터베이스 연동 완벽 가이드 (JDBC, JPA, MyBatis 비교)

Java 기반의 백엔드 개발에서 데이터베이스 연동은 필수입니다. Spring에서는 다양한 방식으로 DB 연동을 지원하며, 대표적으로 JDBC, JPA, MyBatis가 널리 사용됩니다. 이 글에서는 각 방식의 특징, 장단점, 적용 사례를 비교하며 실무 선택 기준까지 제시합니다.

1. JDBC(Java Database Connectivity)

JDBC는 Java의 표준 API로, SQL을 직접 작성하고 실행하는 가장 기본적인 DB 연동 방식입니다.

특징

  • SQL을 직접 작성 → 자유도 높음
  • 단순하고 명확하지만 반복 코드 많음
  • 트랜잭션/예외/리소스 처리 수동 필요

예시 코드

Connection conn = DriverManager.getConnection(...);
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE id = ?");
pstmt.setLong(1, id);
ResultSet rs = pstmt.executeQuery();

2. JPA(Java Persistence API) with Spring Data JPA

JPA는 객체와 테이블을 매핑해주는 ORM(Object Relational Mapping) 기술입니다. SQL을 직접 작성하지 않고, Entity 클래스와 Repository 인터페이스 중심으로 개발할 수 있습니다.

특징

  • 생산성 매우 높음
  • 복잡한 SQL 없이 CRUD 자동화
  • 객체지향 설계와 궁합이 좋음
  • 초기 러닝커브 존재

예시 코드

@Entity
public class User {
    @Id @GeneratedValue
    private Long id;
    private String name;
}

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByName(String name);
}

3. MyBatis

MyBatis는 SQL을 XML이나 어노테이션으로 분리 작성할 수 있도록 도와주는 SQL 매퍼 프레임워크입니다. 복잡한 쿼리를 작성하거나 DB 중심 프로젝트에 적합합니다.

특징

  • SQL 제어 자유도 매우 높음
  • XML 기반 매핑 파일로 명확한 관리
  • 객체 매핑은 자동 지원
  • 쿼리 중복 가능성, 유지보수 부담 있음

예시 코드

<select id="selectUser" resultType="User">
  SELECT * FROM users WHERE id = #{id}
</select>

4. 기술 비교 요약

항목 JDBC JPA MyBatis
SQL 작성 직접 작성 자동 생성 직접 작성
생산성 낮음 높음 중간
유연성 높음 낮음 매우 높음
러닝커브 낮음 중간 이상 중간
복잡한 쿼리 가능 어려움 강점

5. 실무 선택 기준

  • 단순 CRUD + 생산성 중시: Spring Data JPA
  • 복잡한 쿼리 + 튜닝 필요: MyBatis
  • 직접 제어 + 학습용/경량 프로젝트: JDBC
  • 조합 사용: JPA + MyBatis 혼용 사례도 많음

6. 결론

Spring에서는 JDBC, JPA, MyBatis 모두 유연하게 통합하여 사용할 수 있습니다. 프로젝트의 특성과 팀의 역량에 맞는 방식으로 DB 연동 전략을 선택하는 것이 중요합니다. 각각의 장단점을 충분히 이해하고, 실무 상황에 맞는 도구를 활용하세요.

728x90
반응형
LIST