Вступление
По сути, настройка базы данных состоит из нескольких шагов, прежде чем мы сможем использовать ее через настроенный источник данных в нашем приложении. Это действительно требуется в случае реальных реализаций проекта. Тем не менее, существуют ситуации, когда нам просто нужно сделать 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
|
# H2 spring.h2.console.enabled= true spring.h2.console.path=/h2 # Datasource spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.username=sa spring.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 STUDENT values (10001, 'Ajay' , 'AAA1' ); insert into STUDENT values (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; @Entity public 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; @Repository public 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, являются их собственными. |