코딩/sparta TIL
TIL 40 : JPA 심화 - 프로젝트별 의존성 설명
americanoallday
2025. 5. 1. 14:39
💡 의존성 이란?
- compile 시점 의존성: 프로젝트를 컴파일(빌드)할 때 사용됩니다. 즉, 해당 라이브러리의 API를 사용할 수 있습니다.
- runtime 시점 의존성: 애플리케이션을 실행할 때 사용됩니다. 즉, 실행 시에도 라이브러리가 필요합니다.
- 은닉성: implementation으로 추가된 의존성은 다른 프로젝트 모듈에서 직접 접근할 수 없습니다. 이는 모듈 간의 캡슐화를 도와줍니다.
💡 의존성 옵션 (build.gradle > dependencies)
- implemenataion 옵션
- 직접적인 의존성을 추가할 때 사용됩니다.
- 이는 특정 라이브러리나 모듈이 프로젝트 컴파일 시 필요하지만, 해당 라이브러리가 프로젝트 외부로 공개될 필요가 없다는 것을 의미합니다.
- runtimeOnly 옵션
- compile 시점에는 필요없고 runtime 시점에만 필요한 라이브러리를 추가할 때 사용합니다.
- 대표적으로 Logging 관련 라이브러리, DB 관련 라이브러리 등이 있습니다.
- testImplementation 옵션
- 테스트 코드를 수행할 때 적용할 라이브러리를 추가할 때 사용합니다.
- 테스트 용도로만 라이브러리나 빌트인 DB 사용하고 싶다면 해당 옵션을 사용하면 됩니다.
1. JDBC 프로젝트 세팅 (2가지 의존성 사용)
- runtimeOnly
- h2database:h2
H2는 자바 기반의 인메모리 데이터베이스로, 로컬 개발 및 테스트 환경에서 DB 서버를 별도로 구축하지 않고 사용할 수 있게 해 줍니다. 빠르고 경량이며 설정이 간단하다는 장점이 있습니다.
- h2database:h2
- implemenataion
- spring-boot-starter-jdbc
이 라이브러리는 스프링 부트 애플리케이션에서 JDBC를 사용하기 위한 모든 필수 의존성을 포함하고 있습니다. JDBC API를 통해 데이터베이스와의 연결 및 SQL 쿼리 실행을 쉽게 할 수 있도록 도와줍니다. - spring-boot-starter-web
애플리케이션이 종료되지 않고 웹 서버를 띄울 수 있도록 도와줍니다. (H2 Console 웹페이지 띄우기)
추가하는 것만으로도 웹 애플리케이션이 됨.
- spring-boot-starter-jdbc
# build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
runtimeOnly 'com.h2database:h2'
}
2. JDBC Template 프로젝트 세팅
- runtimeOnly
- h2database:h2
위와 동일하게, H2 데이터베이스를 제공하여, 실제 데이터베이스 서버 없이 개발 및 테스트가 가능합니다.
- h2database:h2
- implemenataion
- spring-boot-starter-jdbc
위와 동일하게, JDBC 연결 및 SQL 관리를 위한 기본적인 도구와 라이브러리를 제공합니다. - spring-boot-starter-web
위와 동일하게, 웹 서버를 띄울 수 있도록 도와줍니다. (H2 Console 웹페이지 띄우기)
- spring-boot-starter-jdbc
# build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
runtimeOnly 'com.h2database:h2'
}
3. QueryMapper 프로젝트 세팅
- runtimeOnly
- h2database:h2
위와 동일하게, H2 데이터베이스를 제공하여, 실제 데이터베이스 서버 없이 개발 및 테스트가 가능합니다.
- h2database:h2
- implemenataion
- spring-boot-starter-jdbc
위와 동일하게, JDBC 연결 및 SQL 관리를 위한 기본적인 도구와 라이브러리를 제공합니다. - mybatis-spring-boot-starter
MyBatis는 SQL 매핑 프레임워크로, 개발자가 SQL 문을 XML 혹은 어노테이션을 통해 관리할 수 있게 해 줍니다. 이 스타터 패키지는 스프링 부트 환경에서 MyBatis를 쉽게 통합하고 사용할 수 있도록 도와줍니다. - spring-boot-starter-web
위와 동일하게, 웹 서버를 띄울 수 있도록 도와줍니다. (H2 Console 웹페이지 띄우기)
- spring-boot-starter-jdbc
# build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
runtimeOnly 'com.h2database:h2'
}
4. QueryFileMapper 프로젝트 세팅
- runtimeOnly
- h2database:h2
위와 동일하게, H2 데이터베이스를 제공하여, 실제 데이터베이스 서버 없이 개발 및 테스트가 가능합니다.
- h2database:h2
- implemenataion
- spring-boot-starter-jdbc
위와 동일하게, JDBC 연결 및 SQL 관리를 위한 기본적인 도구와 라이브러리를 제공합니다. - mybatis-spring-boot-starter
위와 동일하게, 스프링 부트 환경에서 MyBatis를 쉽게 통합하고 사용할 수 있도록 도와줍니다.
이 프로젝트에서는 DAO, Mapper 클래스에 쿼리파일을 매핑시켜주는 역할도 하게됩니다. - spring-boot-starter-web
위와 동일하게, 웹 서버를 띄울 수 있도록 도와줍니다. (H2 Console 웹페이지 띄우기)
- spring-boot-starter-jdbc
# build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
runtimeOnly 'com.h2database:h2'
}
5. JPA 프로젝트 세팅
- runtimeOnly
- h2database:h2
이전 설명과 동일하게, 개발 및 테스트용 인메모리 데이터베이스로 사용됩니다.
- h2database:h2
- implemenataion
- spring-boot-starter-jdbc
JDBC 접근을 위한 기본 설정과 라이브러리를 포함합니다. JPA 설정에서도 내부적으로 JDBC 사용이 필요할 수 있습니다. - spring-boot-starter-data-jpa
이 스타터는 JPA(Java Persistence API)를 사용하여 관계형 데이터베이스를 객체 지향적으로 다룰 수 있게 해 주며, Hibernate 같은 JPA 구현체를 자동으로 설정합니다. 또한, 리포지터리 디자인 패턴의 구현을 쉽게 해 줍니다. - querydsl-jpa
QueryDSL은 타입 안전한 쿼리를 지원하는 프레임워크로, 복잡한 쿼리 작성을 보다 쉽고 안전하게 할 수 있습니다. JPA와 함께 사용될 때, 엔티티 객체에 대한 동적 쿼리 생성을 용이하게 해 줍니다. - spring-boot-starter-web
위와 동일하게, 웹 서버를 띄울 수 있도록 도와줍니다. (H2 Console 웹페이지 띄우기)
- spring-boot-starter-jdbc