참고용 QueryDSL 설정
1. 아래 내용을 진행하기에 앞서 H2 데이터베이스 설치 (운영체제에 맞게 설치)
https://www.h2database.com/html/main.html
2. 설치 후, h2 데이터베이스 실행
설치된 h2 데이터베이스 경로에서 bat 파일 실행해주기
- h2\bin 이동 -> h2.bat 클릭하여 실행
- 터미널 명령어를 통해 실행
- h2 디렉토리 bin 폴더 경로로 이동 후(예: cd /h2/bin) 아래 명령어 입력
- .\h2.bat
3. 실행 후, h2 콘솔이 띄워지면 도메인명 localhost로 변경
4. 위까지 진행하고 연결을 누르면, db 파일이 로컬에 설치되고 콘솔창이 열린다. 데이터베이스 파일이 만들어지고 나면, tcp를 통해서 접속해야한다.
연결 해제
tcp로 연결
연결 후, 콘솔창이 나오면 아래 설정을 진행
1. 전체 구성 개요
Spring Boot에서 H2 인메모리 데이터베이스와 Spring Data JPA를 함께 사용하는 설정은 개발 및 테스트 환경에서 매우 유용하게 사용된다. 이 조합은 빠른 실행, 쉬운 설정, 웹 기반 콘솔 제공 등의 장점을 갖고 있으며, 별도의 외부 데이터베이스 없이도 데이터 처리 로직을 손쉽게 검증할 수 있다.
2. Gradle 의존성 추가
build.gradle 또는 build.gradle.kts 파일 내에 다음과 같은 의존성을 추가하면 된다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2'
}
spring-boot-starter-data-jpa는 JPA 관련 자동 설정을 포함하며, com.h2database:h2는 H2 데이터베이스 드라이버를 제공한다.
3. application.yml 설정
application.yml 파일에서 데이터베이스 설정과 JPA 관련 옵션을 다음과 같이 구성할 수 있다.
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/test
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
show_sql: true
format_sql: true
logging.level:
org.hibernate.SQL: debug
속성 | 설명 |
spring.datasource.url | DB 접속 URL |
spring.datasource.driver-class-name | JDBC 드라이버 클래스 |
spring.datasource.username | DB 사용자 이름 |
spring.datasource.password | DB 비밀번호 |
spring.jpa.database-platform | Hibernate에서 사용할 DB Dialect |
spring.jpa.hibernate.ddl-auto | 테이블 자동 생성/업데이트 옵션 (create, update, validate, none) |
spring.jpa.show-sql | SQL 실행 로그 출력 여부 |
spring.jpa.properties.hibernate.format_sql | SQL 문을 보기 좋게 출력 |
4. Entity 클래스 작성
JPA를 통해 매핑되는 Entity 클래스는 다음과 같이 정의할 수 있다.
@Entity
@Getter @Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String role;
}
@Entity를 통해 JPA가 관리하는 테이블로 매핑되며, @Id와 @GeneratedValue로 기본 키를 정의한다.
5. Repository 인터페이스 작성
JPA를 통해 DB 작업을 수행하기 위해 JpaRepository를 상속받는 Repository를 작성한다.
public interface MemberRepository extends JpaRepository<Member, Long> {
Member findByUsername(String username);
}
Spring Data JPA는 메서드 이름만으로도 쿼리를 자동 생성하는 기능을 제공한다.
6. 테스트용 초기 데이터 등록
애플리케이션 실행 시 테스트용 데이터를 자동으로 삽입하려면 다음과 같이 구성할 수 있다.
@Component
@RequiredArgsConstructor
public class InitData {
private final MemberRepository memberRepository;
@PostConstruct
public void init() {
memberRepository.save(Member.builder().username("admin").role("ADMIN").build());
memberRepository.save(Member.builder().username("user").role("USER").build());
}
}
이 클래스는 애플리케이션 실행 직후 자동으로 실행되어 초기 데이터를 DB에 저장한다.
마무리 정리
항목 | 설명 |
사용 목적 | 빠른 개발/테스트용 DB 환경 구성 |
DB 설정 | In-memory 방식 (H2), 웹 콘솔 포함 |
Entity/Repository 구성 | Spring Data JPA를 통한 CRUD 처리 |
콘솔 접근 | /h2-console URL에서 DB 확인 가능 |
자동 테이블 생성 | ddl-auto 옵션을 통해 제어 가능 |
'Backend > JPA' 카테고리의 다른 글
Spring Data JPA와 Querydsl을 활용한 페이징 처리 및 성능 최적화 (0) | 2025.04.11 |
---|---|
Querydsl - 사용자 정의 JPA 리포지토리 설계 및 구현 (0) | 2025.04.11 |
QueryDSL - 한 번의 SQL 쿼리로 여러 건의 데이터를 일괄 수정 또는 삭제하는 방법 (벌크 연산) (0) | 2025.03.25 |
QueryDSL 동적 쿼리 - (BooleanBuilder, Where 다중 파라미터 방식) (0) | 2025.03.25 |
QueryDsl - 프로젝션을 DTO 결과로 반환하는 방법과 개념 (0) | 2025.03.17 |