Вступление
По сути, настройка базы данных состоит из нескольких шагов, прежде чем мы сможем использовать ее через настроенный источник данных в нашем приложении. Это действительно требуется в случае реальных реализаций проекта. Тем не менее, существуют ситуации, когда нам просто нужно сделать POC для чего-то, и вся настройка базы данных все еще становится обязательством. Аналогично, для модульных тестов было бы идеально иметь свой собственный набор записей в базе данных, поэтому он независимый, без влияния изменений данных в развернутой среде. Для таких случаев использования базы данных в памяти являются идеальным решением.
База данных в памяти создается при запуске приложения, а уничтожается при остановке приложения.
Spring Boot легко интегрирует базу данных H2. Таким образом, вы можете легко и быстро переключаться между реальной базой данных и базой данных в памяти.
Обратите внимание, что база данных H2 InMemory — это реляционная СУБД, написанная на Java.
Давайте посмотрим на быстрое демо.
Реализация
Давайте создадим проект Spring Boot из Spring initializr . Убедитесь, что вы добавили зависимости Web, JPA, H2 и DevTools, как показано ниже.
Давайте посмотрим на сгенерированный файл POM.
pom.xml
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
<?xml version="1.0" encoding="UTF-8"?> <modelVersion>4.0.0</modelVersion> <groupId>com.jcombat</groupId> <artifactId>h2demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>h2demo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> |
Мы также заметили, что файл application.properties создан как —
application.properties
|
1
2
3
4
5
6
7
8
9
|
# H2spring.h2.console.enabled=truespring.h2.console.path=/h2 # Datasourcespring.datasource.url=jdbc:h2:mem:testdbspring.datasource.username=saspring.datasource.password=spring.datasource.driver-class-name=org.h2.Driver |
Свойство spring.h2.console.enabled = true включает веб-консоль по адресу http: // localhost: 8080 / h2.
Нажмите на Connect и вы попадете на страницу, где вы видите доступные таблицы в БД.
Вы можете быть удивлены, как получилось, что ученический стол создан. Волшебство происходит с data.sql, размещенным в src / main / resources. Просто убедитесь, что у вас есть операторы вставки в файле data.sql, как указано ниже —
data.sql
|
1
2
3
4
5
|
insert into STUDENTvalues(10001,'Ajay', 'AAA1'); insert into STUDENTvalues(10002,'Ajit', 'AAA2'); |
Spring Boot Auto Configuration проверяет значения в файле data.sql и выполняет необходимые для вас действия, т. Е. Создает таблицу STUDENT и выполняет операторы вставки. Умная!
Давайте посмотрим, как мы можем работать с этими записями студентов.
Для этого давайте создадим класс сущности Student.
Student.java
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
package com.jcombat.entity; import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id; @Entitypublic class Student { @Id @GeneratedValue private Long id; private String name; private String section; public Student() { } public Student(Long id, String name, String section) { this.id = id; this.name = name; this.section = section; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSection() { return section; } public void setSection(String section) { this.section = section; } } |
Чтобы получить доступ к базе данных, напишем простой интерфейс JPA, который предоставляет необходимые вспомогательные функции для выполнения основных операций с БД.
StudentRepository.java
|
01
02
03
04
05
06
07
08
09
10
11
|
package com.jcombat.repository; import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.stereotype.Repository; import com.jcombat.entity.Student; @Repositorypublic interface StudentRepository extends JpaRepository<Student, Long> { } |
Давайте теперь настроим класс точки входа Spring Boot, используя Runner командной строки, чтобы мы могли запускать наше приложение Spring Boot из командной строки.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
package com.jcombat.h2demo; import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.CommandLineRunner;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.domain.EntityScan;import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import com.jcombat.repository.StudentRepository; @SpringBootApplication@EntityScan("com.jcombat.entity")@EnableJpaRepositories("com.jcombat.repository")public class H2demoApplication implements CommandLineRunner { // mvn spring-boot:run private Logger LOG = LoggerFactory.getLogger("H2demoApplication"); StudentRepository studentRepository; @Autowired public H2demoApplication(StudentRepository studentRepository) { this.studentRepository = studentRepository; } public static void main(String[] args) { SpringApplication.run(H2demoApplication.class, args); } @Override public void run(String... args) throws Exception { LOG.info("Student count in DB: {}", studentRepository.count()); }} |
Выполнение заявки
Чтобы запустить приложение, вы можете сделать это непосредственно из Eclipse IDE или из командной строки с помощью следующей команды:
|
1
|
mvn spring-boot:run |
Когда выполнено, мы видим ниже вывод, отображаемый на консоли —
Скачать исходный код
| См. Оригинальную статью здесь: Общие сведения о базе данных H2 InMemory с помощью Spring Boot
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |


