SpringBoot/데이터베이스 연동

Spring Data JPA 기본 개념

DEVLIB 2025. 4. 14. 10:43
728x90

Spring Data JPA란?

정의

Spring Data JPA는 **JPA(Java Persistence API)**의 표준 기능을 바탕으로,
반복적인 CRUD 코드 없이 인터페이스만으로 데이터베이스와 상호작용할 수 있게 해주는 스프링 생태계의 모듈입니다.

한 줄 요약:
“SQL 없이 자바 인터페이스로 DB 조작하기”


구조 관계

Spring Boot
   ↓
Spring Data JPA
   ↓
JPA (Hibernate)
   ↓
DB (MySQL, H2, PostgreSQL 등)

핵심 개념 정리

용어
설명
Entity DB 테이블과 매핑되는 자바 클래스
Repository 데이터를 조회/저장하는 인터페이스
@Entity 이 클래스가 DB 테이블과 매핑된다는 의미
@Id 기본 키 지정
@GeneratedValue 자동 생성 전략 지정 (AUTO, IDENTITY 등)
JpaRepository<T, ID> CRUD, 페이징, 정렬 기능 포함 인터페이스

기본 사용 예시

1. 엔티티 클래스 생성

@Entity
public class Member {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;
    private int age;

    // 기본 생성자, Getter/Setter 등 생략
}

2. Repository 인터페이스 생성

public interface MemberRepository extends JpaRepository<Member, Long> {
    // 자동으로 findByName(), findByAge() 등의 메서드 생성 가능
    List<Member> findByName(String name);
}

3. 서비스나 컨트롤러에서 사용

@Service
public class MemberService {
    private final MemberRepository memberRepository;

    public MemberService(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }

    public void saveMember() {
        Member m = new Member();
        m.setName("홍길동");
        m.setAge(25);
        memberRepository.save(m);
    }
}

데이터베이스 설정 (application.yml)

spring:
  datasource:
    url: jdbc:h2:mem:testdb
    driver-class-name: org.h2.Driver
    username: sa
    password:
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

ddl-auto: update는 애플리케이션 실행 시 테이블을 자동으로 생성해 줍니다.
show-sql: true는 실행되는 SQL을 콘솔에 보여줍니다.


JpaRepository 제공 메서드

메서드 설명
save(entity) 저장 또는 수정
findById(id) PK로 조회
findAll() 전체 조회
delete(entity) 삭제
count() 개수 조회

Spring Data JPA의 장점

  • SQL 없이 CRUD 구현 가능 (코드량 ↓)
  • 유지보수 용이 (인터페이스 중심)
  • 다양한 DB 지원 (MySQL, PostgreSQL, Oracle, H2 등)
  • 페이징, 정렬 등도 기본 제공

주의사항

  • @Transactional이 필요한 경우를 반드시 인식해야 함 (쓰기 작업 등)
  • 복잡한 쿼리는 QueryDSL이나 @Query로 보완 필요
  • 성능 이슈: N+1 문제, Lazy Loading 주의 필요

마무리 요약

항목 설명
목적 자바 코드만으로 DB 조작 가능하게 함
핵심 구성 @Entity, JpaRepository, @Id
장점 SQL 없이도 강력한 DB 처리 가능
추천 이유 유지보수 쉽고 생산성이 높음
LIST