logo

스프링 부트 H2 데이터베이스

인메모리 데이터베이스란?

인메모리 데이터베이스는 데이터 저장을 위해 디스크 공간이 아닌 시스템 메모리에 의존합니다. 메모리 접근이 디스크 접근보다 빠르기 때문이다. 데이터를 유지할 필요가 없을 때 메모리 내 데이터베이스를 사용합니다. 인메모리 데이터베이스는 내장형 데이터베이스입니다. 인메모리 데이터베이스는 기본적으로 휘발성이며 애플리케이션을 다시 시작하면 저장된 모든 데이터가 손실됩니다.

널리 사용되는 인메모리 데이터베이스는 다음과 같습니다. H2, HSQLDB (HyperSQL 데이터베이스) , 그리고 아파치 더비. 구성이 자동으로 생성됩니다.

자바 정렬의 arraylist

지속성 대 인메모리 데이터베이스

영구 데이터베이스는 데이터를 물리적 메모리에 유지합니다. 데이터베이스 서버가 바운스되는 경우에도 데이터를 사용할 수 있습니다. 일부 인기 있는 지속성 데이터베이스는 다음과 같습니다. 오라클, MySQL , 포스트그레스 , 등.

의 경우 인메모리 데이터베이스, 데이터 저장소 시스템 메모리 . 프로그램을 종료하면 데이터가 손실됩니다. 다음에 도움이 됩니다. 작은 s(개념 증명), 프로덕션 애플리케이션용이 아닙니다. 널리 사용되는 인메모리 데이터베이스는 H2.

H2 데이터베이스란 무엇입니까?

H2 이다 임베디드, 오픈 소스, 그리고 메모리 내 데이터 베이스. 로 작성된 관계형 데이터베이스 관리 시스템입니다. 자바 . 이것은 클라이언트 서버 애플리케이션. 그것은 일반적으로 사용됩니다 단위 테스트 . 디스크에 데이터를 유지하지 않고 메모리에 데이터를 저장합니다.

장점

  • 제로 구성
  • 사용하기 쉽습니다.
  • 가볍고 빠릅니다.
  • 실제 데이터베이스와 메모리 내 데이터베이스 사이를 전환할 수 있는 간단한 구성을 제공합니다.
  • 표준 SQL 및 JDBC API를 지원합니다.
  • 데이터베이스를 유지 관리하기 위한 웹 콘솔을 제공합니다.

H2 데이터베이스 구성

애플리케이션에서 H2 데이터베이스를 사용하려면 pom.xml 파일에 다음 종속성을 추가해야 합니다.

 com.h2database h2 runtime 

종속성을 추가한 후 구성해야 합니다. 데이터 소스 URL, 드라이버 클래스 이름, 사용자 이름, 그리고 비밀번호 H2 데이터베이스의 Spring Boot는 이러한 속성을 구성하는 쉬운 방법을 제공합니다. 애플리케이션.속성 파일.

 spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 

에서 spring.datasource.url 재산, 기억 인메모리 데이터베이스의 이름이고 테스트DB H2가 기본적으로 제공하는 스키마 이름입니다. 자체 스키마와 데이터베이스를 정의할 수도 있습니다. 기본 사용자 이름은 다음과 같습니다. ~에 빈 비밀번호는 비어 있는 비밀번호. 사용자 이름과 비밀번호를 변경하려면 이 값을 재정의할 수 있습니다.

H2 데이터베이스에 데이터 유지

H2 데이터베이스에 데이터를 유지하려면 데이터를 파일에 저장해야 합니다. 동일한 결과를 얻으려면 데이터 소스 URL 속성을 변경해야 합니다.

 #persist the data spring.datasource.url=jdbc:h2:file:/data/sampledata spring.datasource.url=jdbc:h2:C:/data/sampledata 

위 속성에서는 샘플 데이터 파일 이름입니다.

스키마 생성 및 데이터 채우기

스키마를 생성하여 스키마를 정의할 수 있습니다. SQL 파일을 자원 폴더(src/main/resource).

스키마.sql

 DROP TABLE IF EXISTS CITY; CREATE TABLE CITY ( City_code INT AUTO_INCREMENT PRIMARY KEY, city_name VARCHAR(50) NOT NULL, city_pincode INT(8) NOT NULL ); 

다음을 생성하여 테이블에 데이터를 채울 수 있습니다. SQL 파일을 자원 폴더(src/main/resource).

데이터.sql

 INSERT INTO CITY VALUES (11, 'Delhi', 110001); INSERT INTO CITY VALUES (12, 'Kanpur', 208001); INSERT INTO CITY VALUES (13, 'Lucknow', 226001); 

Spring Boot는 자동으로 데이터.sql 파일을 저장하고 애플리케이션 시작 중에 H2 데이터베이스에 대해 실행합니다.

H2 콘솔

기본적으로 H2 데이터베이스의 콘솔 보기는 비활성화되어 있습니다. H2 데이터베이스에 액세스하기 전에 다음 속성을 사용하여 활성화해야 합니다.

 #enabling the H2 console spring.h2.console.enabled=true 

H2 콘솔을 활성화하면 이제 URL http://localhost:8080/h2-console을 호출하여 브라우저에서 H2 콘솔에 액세스할 수 있습니다. 다음 그림은 H2 데이터베이스의 콘솔 보기를 보여줍니다.

스프링 부트 H2 데이터베이스

위 스크린샷에서는 다음과 같은 자체 데이터베이스를 정의했습니다. javatpoint .

스프링 부트 H2 예

H2 데이터베이스를 사용하여 Spring Boot 애플리케이션을 설정해 보겠습니다.

1 단계: Spring 초기화 프로그램 http://start.spring.io를 엽니다.

2 단계: Spring Boot 버전을 선택하세요. 2.3.0.M1.

2 단계: 제공 그룹 이름. 우리는 제공했습니다 com.javatpoint.

3단계: 제공 인공물 ID. 우리는 제공했습니다 스프링 부트-h2-데이터베이스-예제.

5단계: 종속성 추가 스프링 웹, 스프링 데이터 JPA, 그리고 H2 데이터베이스.

6단계: 다음을 클릭하세요. 생성하다 단추. 생성 버튼을 클릭하면 프로젝트가 다음과 같이 래핑됩니다. 항아리 파일을 다운로드하여 로컬 시스템에 다운로드합니다.

스프링 부트 H2 데이터베이스

7단계: 발췌 Jar 파일을 다운로드하여 STS 작업공간에 붙여넣습니다.

8단계: 수입 프로젝트 폴더를 STS로 복사합니다.

파일 -> 가져오기 -> 기존 Maven 프로젝트 -> 찾아보기 -> spring-boot-h2-database-example 폴더 선택 -> 완료

가져오는 데 시간이 좀 걸립니다.

9단계: 이름으로 패키지 만들기 com.javatpoint.model 폴더에 src/메인/java.

10단계: 패키지에 모델 클래스 생성 com.javatpoint.model. 우리는 이름으로 모델 클래스를 만들었습니다. 학생. Books 클래스에서는 다음을 수행했습니다.

  • 4개의 변수 정의 아이디, 나이, 이름, 그리고
  • Getter 및 Setter를 생성합니다.
    파일 -> 소스 -> 게터 및 세터 생성을 마우스 오른쪽 버튼으로 클릭합니다.
  • 클래스를 다음으로 표시 실재 주석을 사용하여 @실재.
  • 클래스를 다음으로 표시 테이블 주석을 사용하여 이름 지정 @테이블.
  • 각 변수를 다음과 같이 정의합니다. 주석을 사용하여 @열.

Student.java

 package com.javatpoint.model; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; //mark class as an Entity @Entity //defining class name as Table name @Table public class Student { //mark id as primary key @Id //defining id as column name @Column private int id; //defining name as column name @Column private String name; //defining age as column name @Column private int age; //defining email as column name @Column private String email; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } 

11단계: 이름으로 패키지 만들기 com.javatpoint.controller 폴더에 src/메인/java.

12단계: 패키지에 Controller 클래스 생성 com.javatpoint.controller . 우리는 이름으로 컨트롤러 클래스를 만들었습니다. 학생 컨트롤러 . StudentController 클래스에서는 다음을 수행했습니다.

  • 클래스를 다음으로 표시 RestController 주석을 사용하여 @RestController.
  • 자동 연결 학생서비스 주석을 사용하여 클래스 @Autowired .
  • 다음 방법을 정의합니다.
      getAllStudent():모든 학생의 목록을 반환합니다.
  • getStudent():경로 변수에 지정한 학생 세부 정보를 반환합니다. @PathVariable 주석을 사용하여 id를 인수로 전달했습니다. 주석은 메서드 매개변수가 URI 템플릿 변수에 바인딩되어야 함을 나타냅니다.삭제학생():경로 변수에 지정한 특정 학생을 삭제합니다.저장학생():학생 세부 정보를 저장합니다. @RequestBody 주석은 메소드 매개변수가 웹 요청 본문에 바인딩되어야 함을 나타냅니다.

StudentController.java

 package com.javatpoint.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import com.javatpoint.model.Student; import com.javatpoint.service.StudentService; //creating RestController @RestController public class StudentController { //autowired the StudentService class @Autowired StudentService studentService; //creating a get mapping that retrieves all the students detail from the database @GetMapping('/student') private List getAllStudent() { return studentService.getAllStudent(); } //creating a get mapping that retrieves the detail of a specific student @GetMapping('/student/{id}') private Student getStudent(@PathVariable('id') int id) { return studentService.getStudentById(id); } //creating a delete mapping that deletes a specific student @DeleteMapping('/student/{id}') private void deleteStudent(@PathVariable('id') int id) { studentService.delete(id); } //creating post mapping that post the student detail in the database @PostMapping('/student') private int saveStudent(@RequestBody Student student) { studentService.saveOrUpdate(student); return student.getId(); } } 

13단계: 이름으로 패키지 만들기 com.javatpoint.service 폴더에 src/메인/java.

14단계: 만들기 서비스 수업. 우리는 이름으로 서비스 클래스를 만들었습니다. 학생서비스 패키지에 com.javatpoint.service.

StudentService.java

 package com.javatpoint.service; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.javatpoint.model.Student; import com.javatpoint.repository.StudentRepository; @Service public class StudentService { @Autowired StudentRepository studentRepository; //getting all student records public List getAllStudent() { List students = new ArrayList(); studentRepository.findAll().forEach(student -> students.add(student)); return students; } //getting a specific record public Student getStudentById(int id) { return studentRepository.findById(id).get(); } public void saveOrUpdate(Student student) { studentRepository.save(student); } //deleting a specific record public void delete(int id) { studentRepository.deleteById(id); } } 

15단계: 이름으로 패키지 만들기 com.javatpoint.repository 폴더에 src/메인/java.

16단계: 만들기 저장소 상호 작용. 우리는 이름으로 저장소 인터페이스를 만들었습니다. 학생 저장소 패키지에 com.javatpoint.repository. 그것은 확장합니다 크루드 저장소 상호 작용.

학생Repository.java

 package com.javatpoint.repository; import org.springframework.data.repository.CrudRepository; import com.javatpoint.model.Student; public interface StudentRepository extends CrudRepository { } 

이제 데이터 소스를 구성하겠습니다. URL, 드라이버 클래스 이름, 사용자 이름, 그리고 비밀번호, 에서 애플리케이션.속성 파일.

17단계: 열기 애플리케이션.속성 파일을 작성하고 다음 속성을 구성합니다.

애플리케이션.속성

 spring.datasource.url=jdbc:h2:mem:javatpoint spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.database-platform=org.hibernate.dialect.H2Dialect #enabling the H2 console spring.h2.console.enabled=true 

참고: H2 콘솔을 활성화하는 것을 잊지 마십시오.

모든 클래스와 패키지를 생성한 후 프로젝트 디렉터리는 다음과 같습니다.

스프링 부트 H2 데이터베이스

이제 애플리케이션을 실행하겠습니다.

18단계: 열려 있는 SpringBootH2DatabaseExampleApplication.java 파일을 다운로드하여 Java 애플리케이션으로 실행합니다.

SpringBootH2DatabaseExampleApplication.java

 package com.javatpoint; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootH2DatabaseExampleApplication { public static void main(String[] args) { SpringApplication.run(SpringBootH2DatabaseExampleApplication.class, args); } } 

다음 단계에서는 나머지 클라이언트를 사용하겠습니다. 우편 집배원 보내기 위해 우편 그리고 얻다 요구 . Postman이 시스템에 설치되어 있지 않은 경우 아래 단계를 따르십시오.

  • Postman을 다음에서 다운로드하세요. https://www.getpostman.com/downloads/ 또는 브라우저에 Google Chrome 확장 프로그램을 추가하세요. https://bit.ly/1HCOCwF .
  • Postman을 실행하고 가입하기 . 사용자 이름을 만들다. 우리는 이름으로 사용자를 만들었습니다 javatpoint 그리고 클릭했다 제출하다

19단계: 열기 우편 집배원 그리고 다음을 수행합니다:

  • 선택 우편
  • URL http://localhost:8080/student를 호출합니다.
  • 선택
  • 콘텐츠 유형을 선택하세요. JSON(애플리케이션/json).
  • 데이터를 삽입합니다. 본문에 다음 데이터를 삽입했습니다.
 { 'id': '001', 'age': '23', 'name': 'Amit', 'email': '[email protected]' } 
  • 다음을 클릭하세요. 보내다

요청이 성공적으로 실행되면 다음이 표시됩니다. 상태:200 OK . 이는 레코드가 데이터베이스에 성공적으로 삽입되었음을 의미합니다.

js 세트

마찬가지로 다음 데이터를 삽입했습니다.

 { 'id': '002', 'age': '24', 'name': 'Vadik', 'email': '[email protected]' } { 'id': '003', 'age': '21', 'name': 'Prateek', 'email': '[email protected]' } { 'id': '004', 'age': '25', 'name': 'Harsh', 'email': '[email protected]' } { 'id': '005', 'age': '24', 'name': 'Swarit', 'email': '[email protected]' } 

데이터를 보기 위해 H2 콘솔에 접속해 보겠습니다.

20단계: 브라우저를 열고 URL http://localhost:8080/h2-console을 호출합니다. 다음을 클릭하세요. 연결하다 버튼을 클릭하세요.

스프링 부트 H2 데이터베이스

다음을 클릭한 후 연결하다 버튼을 누르면 학생 아래와 같이 데이터베이스에 테이블이 있습니다.

스프링 부트 H2 데이터베이스

21단계: 다음을 클릭하세요. 학생 표를 클릭한 다음 달리다 단추. 표는 본문에 삽입한 데이터를 보여줍니다.

스프링 부트 H2 데이터베이스

22단계: Postman을 열고 메일을 보내세요. 얻다 요구. 데이터베이스에 삽입한 데이터를 반환합니다.

스프링 부트 H2 데이터베이스

보내자 얻다 URL http://localhost:8080/student/{id}로 요청하세요. 우리는 URL http://localhost:8080/student/3을 호출했습니다. ID가 3인 학생의 세부 정보를 반환합니다.

스프링 부트 H2 데이터베이스

마찬가지로 다음을 보낼 수도 있습니다. 삭제 요구. ID가 2인 학생 기록을 삭제한다고 가정해 보겠습니다.

학생 기록을 삭제하려면 다음을 보내십시오. 삭제 URL http://localhost:8080/student/2로 요청하세요. 우리는 ID가 다음과 같은 학생임을 확인합니다. 2 데이터베이스에서 삭제되었습니다.

스프링 부트 H2 데이터베이스
H2 데이터베이스 예시 프로젝트 다운로드