Spring Boot + MySQL: Создание модели данных

Настройка базы данных MySQL и создание модели данных для взаимодействия Java Spring Boot приложения с ней. Для выполнения практических заданий рекомендуется использовать сайт ссылка на сайт. В этом курсе используется MySQL из-за её широкой популярности.

Подключение библиотек

Для взаимодействия Java Spring Boot с MySQL подключите библиотеки через pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

Зависимости spring-boot-starter-jdbc и spring-boot-starter-test пока не нужны.

spring-boot-starter-data-jpa использует JPA (Java Persistence API) — стандартную технологию для работы с базами данных в Java. MySQL Connector/J обеспечивает подключение к MySQL.

Настройка подключения

Настройки подключения укажите в application.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/spring_boot_blog?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update
  • spring.datasource.url: Строка подключения. localhost:3306 — адрес и порт локального сервера MySQL, spring_boot_blog — имя базы данных. Замените на свои значения.
  • spring.datasource.username и spring.datasource.password: Имя пользователя и пароль. Замените на свои учетные данные.
  • spring.jpa.hibernate.ddl-auto=update: Настройка Hibernate (ORM фреймворка) для автоматического обновления схемы базы данных при запуске приложения. В продакшн-окружении используйте validate или none.

Для запуска локального сервера MySQL используйте phpMyAdmin, XAMPP, MAMP или Open Server. Укажите в application.properties корректный порт, имя пользователя и пароль.

Создание модели данных (Entity)

Создайте Java-класс для модели данных таблицы «посты»:

package com.example.demo.model;

import javax.persistence.*;

@Entity
public class Post {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String title;

    @Column(columnDefinition = "TEXT", nullable = false)
    private String content;

    @Column(columnDefinition = "TEXT", nullable = false)
    private String annotation;

    private int views;

    // Getters and Setters
}
  • @Entity: Указывает, что класс представляет сущность базы данных.
  • @Id: Поле, являющееся первичным ключом.
  • @GeneratedValue(strategy = GenerationType.IDENTITY): Автоматическая генерация значений первичного ключа.
  • @Column: Параметры столбца в базе данных (nullable = false — столбец не может быть NULL).

Сгенерируйте геттеры и сеттеры для всех полей.

Создание репозитория

Создайте интерфейс, расширяющий JpaRepository:

package com.example.demo.repository;

import com.example.demo.model.Post;
import org.springframework.data.jpa.repository.JpaRepository;

public interface PostRepository extends JpaRepository<Post, Long> {
}

Этот интерфейс предоставляет методы для CRUD-операций (Create, Read, Update, Delete) над сущностью Post.

Интеграция с контроллером

В контроллере внедряем репозиторий:

@Controller
public class BlogController {

    @Autowired
    private PostRepository postRepository;

    @GetMapping("/blog")
    public String blog(Model model) {
        model.addAttribute("posts", postRepository.findAll());
        return "blog";
    }
}

В шаблоне Thymeleaf перебираем данные:

<div th_each="post : ${posts}">
    <h3><span th_text="${post.title}"></span></h3>
    <p th_text="${post.annotation}"></p>
    <a th_href="@{/blog/{id}(id=${post.id})}" th_text="'Подробнее'"></a>
</div>

Запустите приложение. В базе данных автоматически создастся таблица post. Добавьте записи (через phpMyAdmin) и проверьте отображение на странице /blog.

В этом уроке мы настроили подключение к базе данных MySQL, создали модель данных и репозиторий, и интегрировали их с контроллером. В следующих уроках рассмотрим добавление, редактирование и удаление записей.

Что будем искать? Например,программа