English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

온라인 도구2数据库

SpringBoot H

메모리 데이터베이스는 무엇인가요

広く使用されているメ모리データ베이스는 다음과 같습니다. 메모리データ베이스는 시스템 메모리에依存하여 디스크 데이터ストレ이지スペースではなくデータを保存します. 메모리アクセス는ディスクアクセスよりも速いため입니다.データをパーシ스ティブにする必要がない場合、メ모리データ베이스를 사용합니다. メモ리データ베이스はエンベ디드データベ이스です.デフォルトでは、メモ리データ베이스は非持続性であり、アプリケ이션을再起動할 때 저장된すべて의 데이터가消失します。 H2,HSQLDB (HyperSQL 데이터베이스) public static void main(String[] args) Apache Derby. 자동으로 설정을 생성합니다.

persistency와 메모리 데이터베이스

persistency database는 데이터를 물리 메모리에 지속적으로 저장합니다. 데이터베이스 서버가 꺼지더라도 데이터는 사용할 수 있습니다. 유명한 persistency database는 다음과 같습니다 Oracle, MySQL, Postgres,와 같이。

이 대목에 대하여 内存数据库,数据存储在 系统内存中。程序关闭时丢失了数据。它对 POC (概念证明)很有帮助,而不对生产应用程序有用。广泛使用的内存数据库是 H2데이터베이스 예제 애플리케이션.class, args);

什么是H2数据库

H2 嵌入式,开源public static void main(String[] args) 内存数据库。它是用 Java 编写的关系数据库管理系统。这是一个 客户端/服务器应用程序。它通常用于 单元测试。它将数据存储在内存中,而不是将数据持久存储在磁盘上。

优点

零配置 易于使用。 轻巧,快速。 它提供了简单的配置,可以在真实数据库和内存数据库之间切换。 它支持标准的SQL和JDBC API。 它提供了一个可在数据库中维护的Web控制台。

配置H2数据库

如果要在应用程序中使用H2数据库,则需要在pom.xml文件中添加以下依赖项:

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>

添加依赖项后,我们需要配置H2数据库的 数据源URL,驱动程序类名称,用户名public static void main(String[] args) 비밀번호。 Spring Boot提供了一种简单的方法来配置 application.properties 文件中的这些属性。

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 属性中, mem 是内存数据库的名称,而 testdb 是内存数据库的名称。默认情况下,H2提供的架构。我们还可以定义自己的架构和数据库。默认用户名是 sa ,空白密码表示 密码。如果要更改用户名和密码,可以覆盖这些值。

将数据保留在H2数据库中

如果要将数据保留在在H2数据库中,我们应该将数据存储在一个文件中。为此,我们需要更改数据源的 URL 属性。

#保存数据
spring.datasource.url=jdbc:h2:file:/data/sampledata
spring.datasource.url=jdbc:h2:C:/data/sampledata

在上面的属性中, sampledata 是一个文件名。

创建Schema构并填充数据

我们可以定义通过在 resource 文件夹(src)中创建 SQL 文件创建架构/src/resource)。

schema.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,
);

다음과 같이 가능합니다 resource 폴더(src/src/resource)에 파일을 생성하십시오 SQL 파일을 사용하여 테이블에 데이터를 채웁니다.

data.sql

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

Spring Boot이 응용 프로그램 시작 시 자동으로 선택합니다 data.sql 파일을 열고 H2데이터베이스를 실행합니다.

H2컨솔은 비활성화되어 있습니다.

기본적으로, H2데이터베이스의 콘솔 뷰.2데이터베이스를 활성화하기 전에, 다음 속성을 사용하여 활성화해야 합니다.

# H 활성화2
consolespring.h2.console.enabled=true

H2console을 호출하여 URL http://localhost:8080/h2-console을 브라우저에서 접근할 수 있습니다.2컨솔.2데이터베이스의 콘솔 뷰를 정의했습니다.

위의 스크린 샷에서 우리는 w3codebox 의 데이터베이스.

Spring Boot H2예제

Spring Boot을 설정해 보겠습니다.

단계1: Spring Initializr를 열어 http://start.spring.io.

단계2: Spring Boot 버전을 선택합니다 2.3.0.M1데이터베이스 예제 애플리케이션.class, args);

단계2: 제공 Group이름. 우리는 다음을 제공했습니다 인터페이스를 만들었습니다.3codebox.

단계3: 제공 Artifact ID. 우리는 다음을 제공했습니다 spring-boot-h2-database-example.

단계5: 의존성을 추가합니다 Spring Web, Spring Data JPA,public static void main(String[] args) H2데이터베이스.

단계6: 클릭하세요 Generate (생성) 버튼을 클릭하면, 그 프로젝트를 다음과 같이 패키짐합니다: Jar 파일에서 그것을 다운로드하여 로컬 시스템에 저장합니다.

단계7: 추출 Jar 파일을 STS 작업 공간에 붙여넣습니다.

8단계: 가져오기프로젝트 폴더를 STS에 가져옵니다.

파일-> 가져오기-> 기존 Maven 프로젝트-> 탐색-> spring 폴더를 선택합니다-boot-h2-database-example-> 완료

импорт는 시간이 걸립니다.

단계9: 폴더에서/src/java 폴더에 있는 이름 인터페이스를 만들었습니다.3codebox.model 데이터베이스 예제 애플리케이션.class, args);

단계10: 패키지 인터페이스를 만들었습니다.3codebox.model에 있는 클래스를 생성했습니다. 이름이 Student 클래스. "도서" 클래스에서 다음 작업을 수행했습니다:

사칙변수를 정의합니다 id, age, namepublic static void main(String[] args) Getter와 Setter를 생성합니다.
파일을 마우스 오른쪽 버튼으로 클릭하세요-> Source-> Generate Getters and Setters。
주석 사용 @Entity로 표시하면 Entity 데이터베이스 예제 애플리케이션.class, args); 주석 사용 @Table클래스를 Table 이름으로. 주석을 사용하여 @Column 각 변수를 정의합니다 Column 데이터베이스 예제 애플리케이션.class, args);

Student.java

이제, 이 애플리케이션을 실행하겠습니다.3codebox.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
//클래스를 엔티티로 표시합니다
@Entity
//클래스 이름을 테이블 이름으로 정의합니다
@Table
public class Student 
{
    //id를 주키로 표시합니다
    @Id
    //id를 열쇠 이름으로 정의합니다
    @Column
    private int id;
    //name을 열쇠 이름으로 정의합니다
    @Column
    private String name;
    //연령 age를 열쇠 이름으로 정의합니다
    @Column
    private int age;
    //email을 열쇠 이름으로 정의합니다
    @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: studentRepository.deleteById(id); 폴더에서/src/main 인터페이스를 만들었습니다.3codebox.controller codebox.repository  

단계12: 의 패키지   인터페이스를 만들었습니다.3codebox.controller 에서 Controller 클래스를 생성했습니다.我们已经创建了名称为   StudentController 의 컨트롤러 클래스로 표시합니다. StudentController 클래스에서는 다음 작업을 완료했습니다:주석 사용 @RestController는 클래스를 RestController 데이터베이스 예제 애플리케이션.class, args); 주석 사용 @Autowired 자동 주석 StudentService 클래스. 以下方法의 정의: getAllStudent(): 모든 학생의 목록을 반환합니다. getStudent(): path 변수에서 지정한 학생의 상세 정보를 반환합니다. @PathVariable 애노테이션을 사용하여 id를 파라미터로 전달했습니다. 애노테이션은 메서드 파라미터가 URI 템플릿 변수에 바인딩되어야 한다는 것을 나타냅니다. deleteStudent(): path 변수에서 지정한 특정 학생을 삭제합니다. saveStudent(): 학생의 상세 정보를 저장합니다. @RequestBody 애노테이션은 메서드 파라미터를 웹 요청 본문에 바인딩해야 한다는 것을 나타냅니다.

StudentController.java

이제, 이 애플리케이션을 실행하겠습니다.3codebox.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.w3codebox.model.Student;
import com.w3codebox.service.StudentService;
//RestController를 생성 중
@RestController
public class StudentController 
{
    //StudentService 클래스를 자동装配
    @Autowired
    StudentService studentService;
    //데이터베이스에서 모든 학생의 상세 정보를 검색하는 get 맵핑을 생성
    @GetMapping("/student)
    private List<Student> getAllStudent() 
    {
        return studentService.getAllStudent();
    }
    //특정 학생의 상세 정보를 검색하는 get 맵핑을 생성
    @GetMapping("/student/{id}")
    private Student getStudent(@PathVariable("id") int id) 
    {
        return studentService.getStudentById(id);
    }
    //특정 학생을 삭제하는 맵핑을 생성
    @DeleteMapping("/student/{id}")
    private void deleteStudent(@PathVariable("id") int id) 
    {
        studentService.delete(id);
    }
    //데이터베이스에서 학생 상세 정보를 발행하는 post 맵핑을 생성
    @PostMapping("/student)
    private int saveStudent(@RequestBody Student student) 
    {
    studentService.saveOrUpdate(student);
    return student.getId();
    }
}

단계13: studentRepository.deleteById(id);   폴더에서/src/java에서 이름을 인터페이스를 만들었습니다.3codebox.service codebox.repository

단계14: 패키지를 생성하십시오.   Service 패키지에서 클래스를 생성했습니다.   인터페이스를 만들었습니다.3codebox.service.

StudentService.java 에서 이름을   StudentService 의 서비스 클래스.

이제, 이 애플리케이션을 실행하겠습니다.3codebox.service;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.w3codebox.model.Student;
import com.w3codebox.repository.StudentRepository;
@Service
public class StudentService 
{
    @Autowired
    StudentRepository studentRepository;
    //모든 학생 기록을 가져오기
    public List<Student> getAllStudent() 
    {
    List<Student> students = new ArrayList<Student>();
    studentRepository.findAll().forEach(student -> students.add(student));
    return students;
    }
    //특정 기록을 가져오기
    public Student getStudentById(int id) 
    {
    public Student getStudentById(int id)
    }
    return studentRepository.findById(id).get(); 
    {
    public void saveOrUpdate(Student student)
    }
    //studentRepository.save(student);
    특정 기록을 삭제합니다 
    {
    public void delete(int id)
    }
}

단계15: studentRepository.deleteById(id);   폴더에서/src/main 인터페이스를 만들었습니다.3java에서 이름이 codebox.repository

단계16: 패키지를 생성하십시오.  저장소패키지에서   인터페이스를 만들었습니다.3com.w codebox.repository에서 이름이 StudentRepository 그것은 저장소 인터페이스를 확장합니다.   Crud Repository 인터페이스.

StudentRepository.java

이제, 이 애플리케이션을 실행하겠습니다.3codebox.repository;
import org.springframework.data.repository.CrudRepository;
import com.w3codebox.model.Student;
public interface StudentRepository extends CrudRepository<Student, Integer>
{
}
 

이제, 다음에서   application.properties 파일에서 데이터 소스를 구성하세요   URL, 드라이버 클래스 이름, 사용자 이름public static void main(String[] args)  비밀번호데이터베이스 예제 애플리케이션.class, args);

단계17: 열기   application.properties 파일을 열고 다음 속성을 구성하세요.

application.properties

spring.datasource.url=jdbc:h2:mem:w3codebox
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
# H 활성화2
consolespring.h2.console.enabled=true
주의하세요: H를 활성화하지 마세요2컨솔

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

现在,我们将运行该应用程序。

단계18: 열기   SpringBootH2DatabaseExampleApplication.java 文件并将其作为Java应用程序运行。

SpringBootH2DatabaseExampleApplication.java

이제, 이 애플리케이션을 실행하겠습니다.3파일을 열고 Java 애플리케이션으로 실행합니다.
SpringBootH
DatabaseExampleApplication.java
package com.w
codebox;2import org.springframework.boot.SpringApplication; 
{
    import org.springframework.boot.autoconfigure.SpringBootApplication; 
    {
        @SpringBootApplication2public class SpringBootH
    }
}

DatabaseExampleApplication  Postman보내기   POST public static void main(String[] args)   GET SpringApplication.run(SpringBootH  데이터베이스 예제 애플리케이션.class, args);

다음 단계에서 다른 클라이언트를 사용하여 요청하고,//에서 https:/www.getpostman.com/downloads//또는 브라우저 https:/1https://bit.ly Postman을 시작하고가입。사용자 이름을 만듭니다. "HCOCwF"에 Google Chrome 확장 프로그램을 추가했습니다. w3codebox 의 사용자가 클릭했습니다. 제출

단계19: 열기  Postman다음 작업을 수행하세요:

선택 POST URL http: //localhost: 8080/학생. 선택바디 콘텐츠 타입 선택 JSON(애플리케이션/json) 데이터 추가. 다음과 같은 데이터를 본문에 추가했습니다:
{
    "id": "00"1",
    "age": ""23",
    "name": "Amit",
    "email": "[email protected]"
}
클릭보내기

요청이 성공적으로 실행되면, 다음과 같이 표시됩니다:  상태: 200 OK 。이는 데이터베이스에 성공적으로 입력되었음을 의미합니다。

이와 같이 다음 데이터를 추가했습니다.

{"id": "002","age": ""24","name": "Vadik","email": "[email protected]"
} 
{
    "id": "00"3",
    "age": ""21",
    "name": "Prateek",
    "email": "[email protected]"
} 
{
    "id": "00"4",
    "age": ""25",
    "name": "Harsh"
    "email": "[email protected]"
} 
{
    "id": "00"5",
    "age": ""24",
    "name": "Swarit",
    "email": "[email protected]"
}

H를 방문하겠습니다2컨솔을 통해 데이터를 확인하세요.

단계20: 브라우저를 열고 다음 URL을 호출하세요 http://localhost:8080/h2-console. 클릭하세요   Connect 버튼, 다음과 같이 보입니다.

클릭하세요  연결버튼을 클릭하면 데이터베이스에서  Student표, 다음과 같이 보입니다.

단계21: 클릭하세요  Student표, 그런 다음  실행버튼. 이 테이블은 우리가 본문에 삽입한 데이터를 표시합니다.

단계22: Postman을 열고 요청을 보내세요   GET 요청. 이는 우리가 데이터베이스에 삽입한 데이터를 반환합니다.

다음 URL을 사용하여 요청을 보내겠습니다 http: //localhost: 8080/student/{id}를 보냈습니다   GET 요청. 우리는 다음 URL을 호출했습니다 http://localhost:8080/student/3입니다. 이는 ID가3의 학생의 상세 정보.

와 같이도 요청을 보낼 수 있습니다.   Delete 요청. 예를 들어, ID가2의 학생 레코드.

학생 레코드를 삭제하려면 다음 URL을 포함한 요청을 보내세요 http://localhost:8080/student/의   DELETE 요청. 우리는 ID가   2 의 학생이 데이터베이스에서 삭제되었습니다。