Spring Boot EnableJpaRepositories

TMT

Spring Boot에서 @EnableJpaRepositories가 자동 구성(Auto-Configuration)되기 위해 필요한 의존성과 조건은 다음과 같습니다.

1. 필수 의존성 (Dependencies)

@EnableJpaRepositoriesSpring Data JPA 모듈의 일부로, 다음 의존성이 반드시 필요합니다:

Gradle (build.gradle)

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    runtimeOnly 'com.mysql:mysql-connector-j'
}

2. 자동 구성이 동작하는 조건

Spring Boot는 다음 조건이 충족될 때 JPA 관련 빈을 자동으로 구성합니다:

  1. DataSource 빈이 존재할 때

    • application.properties/application.yml에 데이터베이스 연결 정보가 설정되어 있어야 합니다.
    • 예시:
      spring.datasource.url=jdbc:mysql://localhost:3306/mydb
      spring.datasource.username=user
      spring.datasource.password=pass
      spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # driver도 url을 통해서 자동으로 찾아줌
  2. JPA 구현체 (예: Hibernate)가 클래스패스에 있을 때

    • spring-boot-starter-data-jpa는 기본적으로 Hibernate를 포함합니다.
  3. @Entity 클래스가 스캔될 패키지 경로가 정의되어 있을 때

    • 기본적으로 @SpringBootApplication이 선언된 패키지와 하위 패키지를 스캔합니다.
    • 다른 패키지를 사용한다면 @EntityScan으로 명시해야 합니다.

3. @EnableJpaRepositories의 역할

  • JPA 리포지토리 인터페이스 자동 검색
    basePackages 속성으로 지정된 패키지에서 JpaRepository를 상속한 인터페이스를 찾아 구현체를 생성합니다.
  • Spring Data JPA의 기능 활성화
    쿼리 메서드, @Query, 페이징/정렬 등의 기능을 사용할 수 있습니다.

4. 자동 구성 실패 시 확인 사항

Case 1: 의존성 누락

  • spring-boot-starter-data-jpa가 없거나 데이터베이스 드라이버가 추가되지 않은 경우.

Case 2: DataSource 설정 오류

  • application.properties에 데이터베이스 연결 정보가 없거나 잘못된 경우.

Case 3: 패키지 경로 불일치

  • 리포지토리 인터페이스가 @EnableJpaRepositoriesbasePackages 범위 밖에 있는 경우.

Case 4: JPA 구현체 충돌

  • Hibernate 외 다른 JPA 구현체 (예: EclipseLink)가 의존성에 포함된 경우 spring.jpa.provider를 명시해야 합니다.

5. 예시 구성

기본 자동 구성 (별도 설정 불필요)

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

커스텀 설정 (패키지 경로 변경 시)

@SpringBootApplication
@EnableJpaRepositories(basePackages = "com.example.repository")
@EntityScan(basePackages = "com.example.domain")
public class MyApplication {
    // ...
}

✅ 정리

  • 필수 의존성: spring-boot-starter-data-jpa + 데이터베이스 드라이버.
  • 자동 구성 조건: DataSource 설정 + @Entity 클래스와 리포지토리 인터페이스가 올바른 패키지에 위치.
  • 문제 해결: 의존성 체크 → DataSource 설정 확인 → 패키지 경로 검토.
Edit this page