Статьи

Spring Boot с базой данных H2

В этом кратком руководстве мы загрузим простое приложение Spring Boot, поддерживаемое базой данных H2 в памяти. Мы будем использовать Spring Data JPA для взаимодействия с нашей базой данных.

Настройка проекта:

Во-первых, давайте сгенерируем наш шаблон проекта с помощью Spring Initializr:

При нажатии на ссылку «Создать проект» , наши файлы проекта будут загружены.

Теперь, если мы внимательно посмотрим на сгенерированный файл POM , мы добавим ниже зависимости:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

Свойства по умолчанию H2:

Поскольку мы добавили зависимость от базы данных H2 , Spring Boot автоматически настроит связанные свойства. Конфигурации по умолчанию включают в себя:

1
2
3
4
5
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=false

Давайте переопределим некоторые из этих свойств, определив их в нашем файле application.properties :

1
2
3
spring.h2.console.enabled=true
spring.h2.console.path=/h2
spring.datasource.url=jdbc:h2:mem:university

Здесь нашей базой данных будет университет . Мы также включили консоль H2 и установили ее контекстный путь.

Определение сущностей:

Теперь мы определим сущность Student :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
@Entity
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
  
    private String name;
     
    public Student(String name) {
        this.name = name;  
    }
  
    //getters, setters
  
    public String toString() {
        return "{id=" + id + ", name=" + name + "}";
    }
}

И соответствующий репозиторий Spring Data JPA:

1
2
3
4
@Repository
public interface StudentRepository
  extends CrudRepository<Student, Integer> {
}

Сущность Student будет отображена в таблицу базы данных с тем же именем. Если мы хотим, мы можем указать другое имя таблицы с аннотацией @Table .

Класс приложения:

Наконец, давайте реализуем наш класс UniversityApplication :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
@SpringBootApplication
public class UniversityApplication {
  
    public static void main(String[] args) {
        SpringApplication.run(UniversityApplication.class, args);      
    }
  
    @Bean
    public CommandLineRunner testApp(StudentRepository repo) {
        return args -> {
            repo.save(new Student("James"));
            repo.save(new Student("Selena"));
  
            List<Student> allStudents = repo.findAll();
            System.out.println("All students in DB: " + allStudents);
  
            Student james = repo.findById(1);
            System.out.println("James: " + james);
        };
    }
}

Этот класс является отправной точкой для нашего приложения Spring Boot. Здесь аннотация @SpringBootApplication эквивалентна совместному использованию @ComponentScan, @EnableAutoConfiguration и @SpringConfiguration .

Мы также определили экземпляр CommandLineRunner . И поэтому, когда мы запустим наше приложение, наши журналы консоли будут иметь:

1
2
3
4
UniversityApplication:All students in DB: [{id=1, name=James}
 , {id=2, name=Selena}]
James: {id=1, name=James}
...

Обратите внимание, что в Spring Boot все сущности в идеале должны быть определены либо на том же уровне пакета, либо на более низких уровнях (в подпакетах), чем у основного класса приложения . Если это так, Spring Boot автоматически просканирует все эти объекты.

Доступ к консоли H2:

Мы также можем проверить записи базы данных на консоли H2.

Для этого мы откроем URL: http: // localhost: 8080 / h2 в любом браузере и воспользуемся конфигурациями нашей базы данных для входа в систему. С его помощью мы сможем легко увидеть все наши созданные таблицы и записи на инструментальной панели консоли UI.

Вывод:

В этом руководстве мы загрузили очень простое приложение Spring Boot с одной сущностью. Это приложение интегрировано с базой данных H2 и использует Spring Data JPA.
Мы можем легко расширить его, чтобы удовлетворить гораздо более широкую область применения.

Опубликовано на Java Code Geeks с разрешения Шубхры Шриваставы, партнера нашей программы JCG . Смотреть оригинальную статью здесь: Spring Boot с базой данных H2

Мнения, высказанные участниками Java Code Geeks, являются их собственными.