728x90
반응형
SMALL
오늘은 데이터베이스 개념을 소개하고, H2 Database를 설정하여 사용하는 방법과 Spring Data JPA 설정을 다룬다.
📌 데이터베이스 개념 소개
- 데이터베이스는 데이터를 저장, 관리, 검색할 수 있는 시스템이다. - SQL(Structured Query Language)을 사용하여 데이터베이스와 상호작용한다. - 오늘은 간단하고 임베디드형 데이터베이스인 H2를 사용하여 학습한다. |
📌 H2 Database 설정 및 사용
- H2 Database는 자바 기반의 경량 임베디드형 데이터베이스로, 학습과 개발에 용이하다. |
📌 H2 Database 의존성 추가
- 먼저, pom.xml 파일에 H2 Database 의존성을 추가한다. |
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.1.214</version>
<scope>runtime</scope>
</dependency>
📌 애플리케이션 설정
- 'application.properties' 파일을 다음과 같이 설정한다.
1. spring.datasource.url=jdbc:h2:mem:testdb - jdbc:h2:mem : H2 데이터베이스를 메모리 모드로 사용한다는 의미다. testdb는 데이터베이스의 이름이다. - H2 데이터베이스 : Java 애플리케이션에서 쉽게 임베디드 데이터베이스로 사용할 수 있는 경량 데이터베이스다. 메모리 모드로 설정하면 애플리케이션이 종료되면 데이터베이스도 사라진다. 2. spring.datasource.driverClassName=org.h2.Driver: - JDBC 드라이버 클래스를 지정한다. H2 데이터베이스를 사용하기 위해 org.h2.Driver를 사용한다. 3. spring.datasource.username=sa: - 데이터베이스 접속에 사용할 기본 사용자 이름이다. H2 데이터베이스의 기본 사용자 이름은 sa다. 4. spring.datasource.password=: - 데이터베이스 접속에 사용할 비밀번호다. 기본 설정에서는 비밀번호가 없다. 5. spring.h2.console.enabled=true: - H2 데이터베이스 콘솔을 활성화한다. - 이를 통해 웹 브라우저에서 H2 데이터베이스를 직접 조회하고 조작할 수 있는 웹 콘솔을 사용할 수 있다. 1. spring.jpa.database-platform=org.hibernate.dialect.H2Dialect: - JPA를 사용할 때 데이터베이스에 맞는 방언(dialect)을 지정한다. - H2 데이터베이스에 맞는 방언은 org.hibernate.dialect.H2Dialect다. - Hibernate는 SQL을 생성하기 위해 데이터베이스에 맞는 방언을 사용한다. 2. spring.jpa.hibernate.ddl-auto=update: - Hibernate가 애플리케이션 시작 시 데이터베이스 스키마를 어떻게 처리할지를 지정한다. - update로 설정하면, Hibernate는 엔티티 클래스와 데이터베이스 스키마를 비교하여 변경된 사항이 있으면 스키마를 업데이트 한다. - 다른 옵션으로는 none, validate, create, create-drop 등이 있으며, 각각의 의미는 다음과 같다: * none: Hibernate가 데이터베이스 스키마에 아무 작업도 하지 않는다. * validate: 데이터베이스 스키마가 엔티티 클래스와 일치하는지 확인하지만, 변경사항은 적용하지 않는다. * create: 기존 스키마를 삭제하고, 엔티티 클래스에 맞춰 새로 생성한다. * create-drop: create와 같지만, 애플리케이션 종료 시 스키마를 삭제한다. 이 설정을 통해 Spring Boot 애플리케이션이 H2 메모리 데이터베이스와 JPA(Hibernate)를 사용하여 데이터 관리를 할 수 있게 된다. H2 콘솔을 통해 데이터베이스를 직접 조회하고 조작할 수 있으며, JPA를 통해 객체 지향적인 방식으로 데이터베이스와 상호작용할 수 있다. |
📌 Spring Data JPA 설정
- Spring Data JPA는 자바 애플리케이션에서 데이터베이스와 상호작용을 간단하게 만들어준다. |
📌 1. Spring Data JPA 의존성 추가
- pom.xml 파일에 Spring Data JPA 의존성을 추가한다. |
<!-- Spring Data JPA -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>3.3.2</version>
</dependency>
📌 2. 엔티티 클래스 작성
- 예제로 간단한 Product 엔티티 클래스를 작성한다. |
package com.example.demo.model;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
// @Entity: 이 클래스가 데이터베이스 테이블과 매핑되는 JPA 엔터티임을 나타냄
public class Product {
@Id
// @Id: 이 필드가 엔터티의 기본 키임을 나타냄
@GeneratedValue(strategy = GenerationType.IDENTITY)
// 기본 키 값을 데이터베이스가 자동으로 생성하도록 한다.
//GenerationType.IDENTITY는 주로 MySQL에서 사용하는 방식으로,
//기본 키 생성을 데이터베이스에 위임한다.
private Long id;
private String name;
private Double price;
}
📌 3. 리포지토리 인터페이스 작성
- ProductRepository 인터페이스를 작성한다. <주요 기능> - ProductRepository 인터페이스는 JpaRepository를 상속받음으로써 기본적인 CRUD 메서드를 자동으로 사용할 수 있다. (예: save, findById, findAll, deleteById 등.) - 추가적인 쿼리 메서드를 정의할 수 있다. (예를 들어, findByName(String name)과 같은 메서드를 추가하여 이름을 기반으로 제품을 검색할 수 있다.) - 이렇게 정의된 ProductRepository를 사용하면 Spring Data JPA가 자동으로 구현체를 생성해주며, 개발자는 별도의 구현 없이 도 데이터베이스와의 상호작용을 쉽게 처리할 수 있다. |
package com.example.demo.repository;
import com.example.demo.model.Product;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
// 이 인터페이스가 Spring의 저장소 역할을 한다고 표시하는 어노테이션이다.
// Spring은 이 어노테이션을 사용하여 이 인터페이스를 빈으로 등록하고,
// 예외를 데이터 액세스 계층과 관련된 예외로 변환한다.
public interface ProductRepository extends JpaRepository<Product, Long> {
}
/* JpaRepository<Product, Long>를 확장함으로써
ProductRepository는 Product 엔티티에 대해 다양한 CRUD 메서드와 페이징, 정렬 등을
사용할 수 있게 된다 */
📌 4. 데이터베이스 초기화
- data.sql 파일을 사용하여 초기 데이터를 삽입할 수 있다. - src/main/resources 디렉토리에 data.sql 파일을 생성하고 다음 내용을 추가한다. |
INSERT INTO product (name, price) VALUES ('Product1', 100.0);
INSERT INTO product (name, price) VALUES ('Product2', 200.0);
728x90
반응형
LIST
'Spring > Spring 쇼핑몰 프로젝트' 카테고리의 다른 글
[쇼핑몰프로젝트] ChatGPT를 이용하여 만드는 JAVA Spring 쇼핑몰 - Day 4: 정적 자원 관리 (0) | 2024.07.15 |
---|---|
[쇼핑몰프로젝트] ChatGPT를 이용하여 만드는 JAVA Spring 쇼핑몰 - DAY 3: 컨트롤러와 뷰 (0) | 2024.07.12 |
[쇼핑몰프로젝트] ChatGPT를 이용하여 만드는 JAVA Spring 쇼핑몰 - DAY 2: Spring Boot 시작하기 (0) | 2024.07.11 |
[쇼핑몰프로젝트] ChatGPT를 이용하여 만드는 JAVA Spring 쇼핑몰 - DAY 1: 프로젝트 소개와 환경 설정 (0) | 2024.07.10 |
[쇼핑몰프로젝트] ChatGPT를 이용하여 만드는 JAVA Spring 쇼핑몰 - 0.계획 커리큘럼 (0) | 2024.07.05 |