## Spring Core
### Что такое Dependency Injection?
DI — паттерн, при котором зависимости передаются извне, а не создаются внутри объекта. В Spring реализуется через конструктор или сеттер.
### Bean scopes
– singleton — один экземпляр на контекст
– prototype — новый экземпляр при каждом запросе
– request — на HTTP-запрос
– session — на сессию
### @Component vs @Service vs @Repository vs @Controller
Все это специализации @Bean:
– @Component — generic
– @Service — business logic
– @Repository — data access
– @Controller — web
## Spring Boot
### Starter’ы
Это зависимости, которые автоматически настраивают приложение (spring-boot-starter-web, data-jpa).
### Встроенный сервер
Spring Boot использует встроенные Tomcat/Jetty/Undertow.
## Hibernate
### Entity states
– Transient — новый объект, не в Persistence Context
– Persistent — в Persistence Context, синхронизирован с БД
– Detached — отсоединён от Persistence Context
– Removed — удалён
### N+1 problem
Проблема, когда один запрос к БД порождает N дополнительных запросов. Решение: fetch join, @EntityGraph, @BatchSize.
—
**Читайте также:**