Hibernate и JPA — практический старт
Hibernate и JPA — практический старт
JPA (Jakarta Persistence API) — стандарт ORM: работа с БД через объекты. Hibernate — основная реализация JPA в Java.
В Spring Boot обычно используют Spring Data JPA, а не EntityManager вручную.
База Spring: Первая программа на Spring · обзор ORM: 110.md · Spring Framework.
Зависимости (Maven)
В start.spring.io выберите: Spring Web, Spring Data JPA, H2 Database.
Или в pom.xml:
<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>
application.properties:
spring.datasource.url=jdbc:h2:mem:notes
spring.h2.console.enabled=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
Сущность
package com.example.notes;
import jakarta.persistence.*;
@Entity
@Table(name = "notes")
public class Note {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, length = 500)
private String text;
protected Note() {}
public Note(String text) {
this.text = text;
}
public Long getId() { return id; }
public String getText() { return text; }
public void setText(String text) { this.text = text; }
}
Репозиторий
package com.example.notes;
import org.springframework.data.jpa.repository.JpaRepository;
public interface NoteRepository extends JpaRepository<Note, Long> {
}
Spring Data сгенерирует save, findAll, findById, deleteById без реализации.
REST-контроллер
package com.example.notes;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
import java.util.List;
@RestController
@RequestMapping("/api/notes")
public class NoteController {
private final NoteRepository repo;
public NoteController(NoteRepository repo) {
this.repo = repo;
}
@GetMapping
public List<Note> list() {
return repo.findAll();
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public Note create(@RequestBody NoteCreate body) {
return repo.save(new Note(body.text()));
}
@DeleteMapping("/{id}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void delete(@PathVariable Long id) {
if (!repo.existsById(id)) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND);
}
repo.deleteById(id);
}
public record NoteCreate(String text) {}
}
./mvnw spring-boot:run
Проверка
curl http://localhost:8080/api/notes
curl -X POST http://localhost:8080/api/notes \
-H "Content-Type: application/json" \
-d '{"text":"JPA работает"}'
Консоль H2: http://localhost:8080/h2-console (JDBC URL из application.properties).
Ключевые понятия
| Термин | Смысл |
|---|---|
Entity | таблица в виде класса |
PersistenceContext | кэш сессии Hibernate |
ddl-auto=update | схема подстраивается (только dev!) |
Lazy loading | связи грузятся по требованию |
Production: миграции через Flyway или Liquibase, не ddl-auto=update.
Дальше
- связи
@OneToMany,@ManyToOne; @Transactionalна сервисном слое;- JUnit 5 с
@DataJpaTest.
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Основы Java - устройство JDK/JVM, модель компиляции и базовые принципы платформонезависимого выполнения. Фундамент для начинающего программиста - что повторить, как работать, чего ожидать. Набор советов, правил, принципов и обычаев в разработке на этом языке. История Java — от проекта Green и Oak до OpenJDK, LTS-релизов и современной платформы (модули, records, виртуальные потоки). Библиотеки, фреймворки, инструменты сборки, тестирования, развёртывания и мониторинга. Что такое пакет и пакетная структура, как собираются проекты на Java. Справочник-шпаргалка по конфигурациям в Java — типы, синтаксис, стандартная библиотека, типовые паттерны. Не заменяет пошаговое обучение. Учебный курс — раздел. Гайд по установке и настройке с написанием первой программы и её запуском. Практические примеры — консольные утилиты, композиция классов в мини-игре и первое Swing-приложение. Точки останова, пошаговое выполнение, панели Variables и Call Stack — практика отладки в IntelliJ IDEA. Кавычки, точки, запятые, скобки и прочие знаки препинания. Это полный справочник всех ключевых слов языка Java, включая основные, контекстные и зарезервированные слова.Основы языка Java
Что требуется знать перед началом изучения языка программирования Java
Рекомендации по разработке на Java
История языка Java
Экосистема Java-приложений
Структура и сборки Java-проектов
Справочник по конфигурациям в Java
Первая программа на Java
Простые приложения на Java
Отладка Java-кода в IDE
Синтаксис и пунктуация в Java
Ключевые слова в Java