С тех пор, как был вытеснен из MySQL еще в 2009 году, MariaDB за последнее десятилетие стала одной из самых популярных баз данных для разработчиков. В то время как многие технологи, вероятно, тяготели к нему как к решению из-за его корней с открытым исходным кодом и того, что оно уходит корнями в мир реляционных баз данных, это действительно только начинает царапать поверхность того, что может предложить MariaDB.
На протяжении многих лет MariaDB отличался от MySQL, добавляя множество функций и функциональных возможностей, многие из которых мы не сможем подробно рассмотреть в контексте этой статьи. Однако одно, прежде всего, осталось неизменным: предоставление современного, высококачественного решения для баз данных с открытым исходным кодом, которое разработчики могут использовать для стимулирования своих инноваций.
Но прежде чем вы сможете погрузиться в MariaDB и ознакомиться со всем, что он может предложить, вам нужно ответить на самые фундаментальные вопросы: как вы начинаете использовать MariaDB?
Подключение к базе данных MariaDB и Java (JDBC)
Вероятно, неудивительно, что Java и, в конечном счете, среда Java Virtual Machine (JVM) в целом была чрезвычайно популярным вариантом, используемым разработчиками для создания приложений.
Имея это в виду, я написал это краткое пошаговое руководство, чтобы ознакомить вас с шагами по началу работы с MariaDB (Community Server) с использованием образа Docker, Java и клиента MariaDB JDBC.
В этом пошаговом руководстве вы будете использовать MariaDB и JDBC для создания простого (на основе Maven ) ” To do” приложение, которое, используя Java Spring , предоставит множество конечных точек для выполнения базовых операций CRUD (создание-чтение-обновление-удаление) над экземпляром базы данных MariaDB.
Давайте начнем!
Требования
Прежде чем перейти к коду, вам нужно убедиться, что у вас есть несколько вещей на вашем компьютере:
- Клиент MariaDB
- Докер
- Java (версия 8+)
- Curl (для тестирования конечных точек API)
Создание нового экземпляра MariaDB с помощью Docker
Один из самых простых способов начать работу с MariaDB, независимо от того, какую операционную систему вы используете, – это извлечь MariaDB Сервер Docker image |/из Docker Hub и используйте его для создания нового контейнера.
Чтобы сделать это, просто откройте окно терминала и выполните следующее:
$ docker run -p 3306:3306 -d --name mariadb -eMARIADB_ROOT_PASSWORD=Password123! mariadb/server:10.4
Это оно. Теперь у вас должен быть запущенный экземпляр MariaDB. Довольно безболезненно, не так ли?
Вы можете подтвердить экземпляр в контейнере Docker, выполнив следующее:
$ docker ps
И вы должны увидеть свой контейнер в выходных данных.
Подключение к MariaDB
Теперь, когда у вас есть работающий MariaDB Экземпляр сервера в новом контейнере Docker следующим шагом будет подключение к экземпляру базы данных и взаимодействие с ним с помощью клиента MariaDB .
Существует множество SQL-клиентов, доступных в дикой природе. Для простоты я решил продемонстрировать, как использовать официальный клиент MariaDB, но, конечно, не стесняйтесь использовать любой клиент, который вы предпочитаете.
Подключитесь к вашему экземпляру MariaDB, выполнив следующее:
$ mariadb --host 127.0.0.1 -P 3306 --user root -pPassword123!
Вы должны увидеть что-то вроде следующего, что означает, что вы успешно подключились к экземпляру MariaDB!
Как только вы подключитесь, вы сможете создать новую базу данных.
CREATE DATABASE todo;
Затем создайте новую таблицу.
CREATE TABLE todo.tasks ( id INT(11) unsigned NOT NULL AUTO_INCREMENT, description VARCHAR(500) NOT NULL, completed BOOLEAN NOT NULL DEFAULT 0, PRIMARY KEY (id) );
Начало работы с Java Spring, JDBC и MariaDB
Развернув экземпляр базы данных и создав схему, вы готовы создать новый Java приложение.
Создайте проект Maven
Начните с перехода к https://start.spring.io , который позволит вам создать новый Весна -основанный Maven проект. Для этого проекта вы можете ввести следующие критерии.
Затем добавьте следующие зависимости:
- Lombok: Библиотека, которая избавит от необходимости создавать шаблонный код (например, геттеры, сеттеры) внутри объектов домена.
- Весенняя паутина: Библиотека для создания и предоставления конечных точек RESTful API.
- Spring Data JPA: Библиотека, предоставляющая абстракции, помогающие устранить шаблонный код для подключения к базам данных и взаимодействия с ними.
Наконец, нажмите кнопку “СОЗДАТЬ”, чтобы создать и загрузить проект (содержащийся в zip-файле) в нужное место на вашем компьютере.
Добавьте соединитель ODBC MariaDB R2
Перейдите в папку, в которую вы загрузили новый проект Maven (zip-файл), и распакуйте архив. Затем используйте редактор кода, чтобы открыть проект, и откройте pom.xml .
Добавьте новую зависимость для соединителя Mariadb JDBC в коллекцию зависимостей.
org.mariadb.jdbc mariadb-java-client 2.6.0
Подготовка к интеграции данных
Теперь, когда вы создали проект, содержащий все необходимые вам зависимости, осталось перейти к Java-коду. Как правило, мне нравится начинать с создания классов сущностей.
Перейдите в/src/main/java/com/mariadb/todo , создайте новую папку с именем “домен” и создайте в ней новый файл с именем “Task.java “.
Открыть “Task.java ” и добавьте следующий код.
package com.mariadb.todo.domain; import javax.persistence.*; import lombok.Data; @Data @Entity @Table(name = "tasks") public class Task { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String description; private Boolean completed = false; }
Затем создайте новую папку с именем “репозитории” в /src/main/java/com/mariadb/to do и создайте в ней новый файл с именем “TaskRepository.java “.
Открыть “TaskRepository.java ” и добавьте следующий код.
package com.mariadb.todo.repositories; import com.mariadb.todo.domain.Task; import org.springframework.data.repository.CrudRepository; public interface TaskRepository extends CrudRepository{ }
Как следует из названия, интерфейс CrudRepository предоставляет базовые операции CRUD в репозитории для универсального типа (в данном случае вашего класса задач) и типа первичного ключа для этого универсального типа.
Создание службы передачи данных
Службы можно использовать для управления бизнес-логикой вашего приложения. Единственная служба, Служба задач, в этом приложении используется для проверки объекта задачи и интеграции с TaskRepository.
Создайте новую папку с именем “services” в /src/main/java/com/mariadb/to do и создайте в ней новый файл с именем “TaskService.java “.
Открыть “TaskService.java ” и добавьте следующий код.
package com.mariadb.todo.services; import java.util.Optional; import com.mariadb.todo.domain.Task; import com.mariadb.todo.repositories.TaskRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; // Registered as a Spring Service (Component) @Service public class TaskService { // Automatically instantiate (via Spring IoC) @Autowired private TaskRepository repository; // public Boolean isValid(final Task task) { if (task != null && !task.getDescription().isEmpty()) { return true; } return false; } // Get all records from the tasks table public IterablegetAllTasks() { return this.repository.findAll(); } // Save a new task record public Task createTask(final Task task) { return this.repository.save(task); } // Update an existing task record @Transactional public Task updateTask(final Task task) { Optional ot = this.repository.findById(task.getId()); Task t = ot.get(); t.setDescription(task.getDescription()); t.setCompleted(task.getCompleted()); return this.repository.save(t); } // Delete the task record by specified id @Transactional public void deleteTask(final int id){ Optional ot = this.repository.findById(id); Task t = ot.get(); this.repository.delete(t); } }
Выставлять конечные точки API
Наконец, вам нужно будет создать controller , чтобы предоставить четыре конечные точки, которые можно использовать для выполнения основных операций CRUD в ваших задачах.
Создайте новую папку с именем “контроллеры” в/src/main/java/com/mariadb/для выполнения и создайте в нем новый файл с именем “TaskController.java “.
Открыть “TaskController.java ” и добавьте следующий код.
package com.mariadb.todo.controllers; import com.mariadb.todo.domain.Task; import com.mariadb.todo.services.TaskService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api/tasks") public class TaskController { @Autowired private TaskService service; // Get all tasks @GetMapping() public ResponseEntity> get() { return ResponseEntity.ok(this.service.getAllTasks()); } // Create a new task @PostMapping() public ResponseEntity post(@RequestBody Task task) { if (service.isValid(task)) { return ResponseEntity.ok(this.service.createTask(task)); } return ResponseEntity.status(HttpStatus.I_AM_A_TEAPOT).build(); } // Update a task @PutMapping() public ResponseEntity put(@RequestBody Task task) { if (service.isValid(task)) { return ResponseEntity.ok(this.service.updateTask(task)); } return ResponseEntity.status(HttpStatus.I_AM_A_TEAPOT).build(); } // Delete a task @DeleteMapping() public ResponseEntity delete(@RequestParam int id) { if (id > 0) { this.service.deleteTask(id); return ResponseEntity.ok().build(); } return ResponseEntity.status(HttpStatus.I_AM_A_TEAPOT).build(); } }
Проверяю это на себе
Теперь, когда все построено, пришло время протестировать это!
Во-первых, создайте приложение.
$ mvn package
А затем запустите его.
$ mvn spring-boot:run
Во-первых, начните с добавления новой задачи в свой список дел.
$ curl --header "Content-Type: application/json" \ --request POST \ --data '{"description":"A New Task"}' \ http://localhost:8080/api/tasks
Хотя вы, конечно, можете напрямую запросить базу данных, чтобы подтвердить, что была добавлена новая запись задачи, что в этом интересного? Вернемся к API!
$ curl https://localhost:8080/api/tasks
Если все пойдет хорошо, вы должны получить следующий JSON-ответ:
{ "id": 1, "description": "A New Task", "completed": false }
Вуаля, полностью реактивное приложение Java Spring, использующее JDBC и MariaDB! Чтобы просмотреть этот код полностью, ознакомьтесь с исходным кодом здесь . И если вам интересно, “конечно, было бы неплохо увидеть реализацию с пользовательским интерфейсом”, вам повезло! Вы можете найти полностью развернутую реализацию приложения TODO, используя React.js и ваш выбор из нескольких проектов API/| ((R2 ODBC, JDBC, Node.js и Python), которые напрямую интегрируются с MariaDB здесь !
Только начинаем
Теперь, когда вы успешно создали новый проект Maven с использованием Spring Data JPA, JDBC и MariaDB, у вас есть все необходимые инструменты, чтобы начать создавать собственные полностью реактивные приложения, использующие возможности MariaDB! Если у вас есть какие-либо вопросы, предложения или проблемы с этим сообщением в блоге, пожалуйста, дайте мне знать здесь или свяжитесь со мной напрямую в Twitter по адресу @probablyrealrob ! Спасибо, что нашли время прочитать это, и счастливого кодирования!
Оригинал: “https://dev.to/probablyrealrob/getting-started-with-mariadb-using-docker-java-spring-and-jdbc-2bak”