Рубрики
Без рубрики

Интеграция базы данных H2 с Spring Boot

Автор оригинала: Guest Contributor.

Что такое Пружинный ботинок

Если вы являетесь разработчиком Spring , вы наверняка знакомы с накладными расходами, связанными с повторяющимися конфигурациями, которые нам необходимо выполнить для настройки проекта. Честно говоря, это болезненное и утомительное занятие. Будучи разработчиком, мы должны сосредоточиться на бизнес-логике, а не на настройке и настройке проекта.

Решением этой проблемы является Весенняя загрузка , которая согласно официальной документации на spring.io :

“Spring Boot позволяет легко создавать автономные, производственные приложения на основе Spring, которые вы можете просто запускать”

Давайте немного разберем это и объясним значение определения:

  • автономный – Spring Boot по умолчанию поддерживает множество встроенных веб-серверов, которые работают внутри приложения. Это устраняет необходимость развертывания любых файлов war . Важно понимать, что здесь слово “автономный” не означает стандартное приложение Java.
  • производственные приложения -Spring Boot отличаются высоким качеством и могут быть развернуты в производстве как есть.
  • просто запустите – Приложения для загрузки Spring можно просто запустить с помощью функции main ИЛИ с помощью команды java –jar . Нет необходимости развертывать его на внешних веб – серверах, хотя мы можем сделать это при необходимости.

Еще одной мощной особенностью Spring Boot является то, что это так называемый “самоуверенный” фреймворк. Как упоминалось ранее, разработка традиционного приложения Spring требует большой настройки. Эти конфигурации не сильно меняются с течением времени, поэтому в конечном итоге они становятся шаблонным кодом.

Spring Boot автоматически настраивает все конфигурации по умолчанию на основе зависимостей, присутствующих/доступных в пути к классам. Конечно, при необходимости вы можете перенастроить или изменить эти конфигурации.

Что такое база данных H2?

H2 является базой данных с открытым исходным кодом и написана на Java. Он очень быстрый и очень маленького размера. Он в основном используется в качестве базы данных в памяти, что означает, что он хранит данные в памяти и не будет сохранять данные на диске. Хотя, если нам нужно сохранить данные, это также поддерживает это.

База данных H2 не рекомендуется для производственных сред и идеально подходит для быстрого проекта PoC, в котором требуется простая база данных.

Он может быть легко интегрирован с Spring, который мы рассмотрим в этом уроке.

Разница между постоянными базами данных и базами данных в памяти

Стоит понять разницу между постоянными базами данных и базами данных в памяти. Постоянные базы данных сохраняют данные в физической памяти, чтобы они были доступны, даже если сервер базы данных отскочил. В случае баз данных в памяти данные хранятся в системной памяти, и данные будут потеряны при закрытии программы.

Базы данных в памяти весьма полезны для POCS и не рекомендуются для использования в производственных приложениях.

Популярные постоянные базы данных включают Oracle, MySQL, Postgres и т.д., В то время как H2 обычно используется в качестве базы данных в памяти.

Настройка проекта весенней загрузки

Существует два способа создания проекта Spring Boot, и в этом разделе мы обсудим оба способа, чтобы ознакомиться с обоими подходами:

1. Инициализация Пружины

Spring Initializr является удобным способом создания проектов Spring Boot и управляется spring.io. Это помогает создать проект Spring Boot онлайн без необходимости загрузки каких-либо инструментов.

Откройте start.spring.io URL-адрес в вашем браузере и введите необходимые данные. Обязательно добавьте Web , H2 и JPA зависимости, так как эти библиотеки понадобятся для нашего проекта.

Нажав на кнопку “Создать проект”, вы загрузите SpringBootH2Integration.zip файл.

Извлеченный zip-файл можно легко импортировать как “Существующий проект Maven” в Eclipse

2. Набор пружинных Инструментов

Набор инструментов Spring (также известный как STS) – это среда разработки, созданная поверх Eclipse, и является наиболее распространенным способом создания проекта.

Его можно загрузить с https://spring.io/tools/sts/all .

Проекты Spring Boot можно создавать с помощью опции “Новый проект Spring Starter”. Это откроет новое окно, в котором нам нужно ввести обязательную информацию. Не забудьте добавить Web , H2 и JPA в качестве зависимостей, поскольку эти библиотеки понадобятся для нашего проекта.

Понимание конфигураций H2 По умолчанию

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

Поскольку мы добавили H2 в качестве зависимости, Spring Boot знает, что в этом проекте мы будем подключаться к базе данных H2, поэтому он автоматически настраивает свойства, связанные с H2, такие как база данных URL , имя пользователя , пароль и т. Д.

Ниже приведены конфигурации по умолчанию, установленные Spring Boot:

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

Если мы посмотрим на свойство datasource.url , имя схемы будет testdb и будет базой данных в памяти (называемой “mem”). Мы увидим, как мы можем переопределить значения по умолчанию в следующих разделах.

Переопределение конфигураций H2 По умолчанию

В предыдущем разделе мы видели конфигурации H2 по умолчанию, которые можно легко изменить или переопределить в зависимости от необходимости, и в этом прелесть Spring Boot.

Чтобы переопределить любое свойство, просто переопределите свойство с обновленным значением в файле application.properties , доступном в папке src/main/resources .

Например, по умолчанию консоль H2 отключена, поэтому давайте включим ее, добавив свойство ниже в файл application.properties :

spring.h2.console.enabled=true

Обзор примера (API человека)

В следующих разделах мы собираемся создать API Person, который представляет собой простую службу REST, в которой мы будем взаимодействовать с H2 с помощью Spring Boot.

Git Essentials

Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!

API Person будет выполнять операции CRUD с использованием разных конечных точек. Ниже приведены подробные сведения о конечных точках:

  1. GET вызов /лицам отобразит все объекты лиц, доступные в базе данных H2.
  2. GET вызов /лицам/{id} отобразит объект person с заданным идентификатором.
  3. СООБЩЕНИЕ вызов /лицам вставит новый объект person в базу данных.
  4. УДАЛИТЬ Вызов /лиц/{id} приведет к удалению объекта person с указанным идентификатором из базы данных.

Прежде чем двигаться дальше, имеет смысл убедиться, что проект, созданный нами в предыдущем разделе, работает нормально и в нем нет ошибок.

Для проверки запустите приложение springbooth 2integration.java файл, как мы запускаем любую программу Java. Сделав это, приложение запустится, и мы сможем увидеть сообщение о запуске сервера в консоли.

Из консоли мы можем найти URL-адрес, по которому мы можем открыть консоль H2:

2018-08-18 22:43:30.578  INFO 3792 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Servlet webServlet mapped to [/h2-console/*]

Напомним, что мы включили консоль H2 в файле application.properties .

Давайте откроем консоль H2, введя http://localhost:8080/h2-console в адресной строке браузера:

Нажмите подключиться, чтобы войти в систему, и просмотрите различные параметры:

Вы можете увидеть другое значение в URL-адресе JDBC, поэтому измените URL-адрес базы данных на jdbc:h2:mem:testdb на экране входа в систему, поскольку это URL-адрес по умолчанию, настроенный Spring Boot.

Пример реализации API человека

Пришло время написать код, используя то, что мы обсуждали.

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

Мы будем выполнять операции CRUD с Человеком объектом. Давайте определим его только с четырьмя атрибутами, чтобы все было просто:

@Entity
public class Person {

    @Id
    @GeneratedValue
    private int id;
    private String name;
    private int age;
    private String emailId;

    //getters and setters
}

Определение ПерсонОрепозиции

Поскольку мы используем JPA в этом примере для взаимодействия с базой данных, давайте определим PersonRepository :

public interface PersonRepository extends CrudRepository {}

Определение Обслуживания Персонала

Служба Person будет предоставлять методы, которые будут вызываться из контроллера и которые взаимодействуют с репозиторием:

@Service
public class PersonService {

    @Autowired
    PersonRepository personRepository;

    public List getAllPersons() {
        List persons = new ArrayList();
        personRepository.findAll().forEach(person -> persons.add(person));
        return persons;
    }

    public Person getPersonById(int id) {
        return personRepository.findById(id).get();
    }

    public void saveOrUpdate(Person person) {
        personRepository.save(person);
    }

    public void delete(int id) {
        personRepository.deleteById(id);
    }
}

Определение Контроллера Персоны

Персональный контроллер напишет методы контроллера, которые будут вызываться различными вызовами конечных точек:

@RestController
public class PersonController {

    @Autowired
    PersonService personService;

    @GetMapping("/persons")
    private List getAllPersons() {
        return personService.getAllPersons();
    }

    @GetMapping("/persons/{id}")
    private Person getPerson(@PathVariable("id") int id) {
        return personService.getPersonById(id);
    }

    @DeleteMapping("/persons/{id}")
    private void deletePerson(@PathVariable("id") int id) {
        personService.delete(id);
    }

    @PostMapping("/persons")
    private int savePerson(@RequestBody Person person) {
        personService.saveOrUpdate(person);
        return person.getId();
    }
}

Итак, мы завершили реализацию нашего примера API Person, и теперь пришло время протестировать его и проверить данные в базе данных H2.

Тестирование API Person

Чтобы протестировать службу REST, я собираюсь использовать инструмент POSTMAN , который можно легко интегрировать в браузер Chrome, используя их расширение браузера .

Давайте запустим приложение, запустив SpringBootH2IntegrationApplication.java . Вывод в консоли должен выглядеть примерно так. Это подтверждает, что он правильно запущен:

2018-08-19 17:00:32.571  INFO 472 --- [   main] c.t.h.SpringBootH2IntegrationApplication : Started SpringBootH2IntegrationApplication in 14.885 seconds (JVM running for 16.437)

Тестовый пример 1: Создание нового объекта Person

Открыть с помощью почтальона

  1. Установите Тип запроса: СООБЩЕНИЕ
  2. Установить URL: http://localhost:8080/persons
  3. setRequestHeader: Тип содержимого:приложение/json
  4. Задайте тело как: {“имя”:”человек А”, “возраст”:23, “Идентификатор электронной почты”: ” [email protected] “}
  5. Нажмите “Отправить”
  6. В ответе мы получим идентификатор лица .

Для проверки данных, вставленных в базу данных H2:

  1. Откройте консоль H2
  2. Проверьте таблицу PERSON . Он покажет нам данные, которые мы вставили в запрос POST.

Повторите тестовый случай 1 с другим человеком, чтобы теперь в базу данных были вставлены два объекта person.

Тестовый пример 2: Получение нового объекта Person

Откройте Почтальона

  1. Тип запроса: ПОЛУЧИТЬ
  2. URL: http://localhost:8080/persons/1
  3. Заголовок запроса: Тип содержимого:приложение/json
  4. Нажмите “Отправить”
  5. В ответ мы получим персональные данные с идентификатором 1.

Тестовый пример 3: Удаление объекта Person

Откройте Почтальона

  1. Тип запроса: УДАЛИТЬ
  2. URL: http://localhost:8080/persons/1
  3. Заголовок запроса: Тип содержимого:приложение/json
  4. Нажмите “Отправить”

После выполнения этого действия убедитесь, что данные были удалены из базы данных H2:

Вывод

После завершения тестирования мы можем завершить этот урок. Мы рассмотрели использование базы данных H2 с помощью Spring Boot и создали демонстрационное приложение. Не стесняйтесь играть с кодом и экспериментировать!