Dan5365 / Dan5365/Magnesium

Key terms during creation of project

Open
#9 0 comments 0 reactions 3 assignees Claimed by @ZhannaKab View on GitHub
documentation good first issue wontfix
Dominant language
Java
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

**Фреймворки:**

1. **Spring Boot** — фреймворк для быстрого создания приложений на базе Spring. Минимальная настройка и автоматическая конфигурация упрощают запуск и разработку.
2. **Hibernate** — фреймворк для работы с базами данных с помощью объектно-ориентированного подхода. Он избавляет от необходимости писать SQL-запросы вручную.
3. **JPA** — стандарт для работы с базами данных через объектно-реляционное отображение (ORM). Hibernate — одна из реализаций JPA.
4. **Lombok** — библиотека, которая автоматически генерирует часто используемые методы (геттеры, сеттеры, конструкторы) в классе, упрощая код.
5. **Thymeleaf** — шаблонизатор для рендеринга HTML-шаблонов на сервере. Часто используется для динамической генерации веб-страниц.

--------------------------------------------------------------------------------------------------------------------------------------------

**Аннотации:**

- **@SpringBootApplication** — аннотация для главного класса приложения. Запускает и настраивает Spring Boot приложение.
==================================================================================

- **@Getter, @Setter (Lombok)** — автоматически генерирует геттеры и сеттеры для всех полей класса.
- **@NoArgsConstructor, @AllArgsConstructor (Lombok)** — генерирует конструкторы без параметров и со всеми параметрами для класса.
==================================================================================

- **@Table (JPA/Hibernate)** — указывает таблицу базы данных, с которой связана сущность.
- **@Id (JPA)** — помечает поле как первичный ключ сущности.
- **@GeneratedValue (JPA)** — автоматически генерирует значение для первичного ключа.
- **@Column (JPA)** — настраивает столбец таблицы для атрибута класса.
- **@Override (Java)** — указывает, что метод переопределяет метод родительского класса.
- **@ResponseStatus (Spring)** — устанавливает HTTP-статус для ответа на запрос.
==================================================================================
- **@Controller (Spring MVC)** — маркирует класс как контроллер для обработки запросов в Spring MVC.
- **@Service (Spring)** — маркирует класс как сервис для бизнес-логики.
- **@Entity (JPA/Hibernate)** — указывает, что класс является сущностью, которая будет отображена в таблицу базы данных.
==================================================================================

- **@GetMapping (Spring MVC)** — обрабатывает HTTP GET-запросы.
- **@PutMapping (Spring MVC)** - Используется для обработки PUT-запросов.
- **@DeleteMapping (Spring MVC)** - Используется для обработки DELETE-запросов.
- **@PostMapping** — это аннотация в Spring, которая указывает, что метод контроллера должен обрабатывать HTTP POST запросы на заданный URL.
- **@RequestMapping** – определяет URL-адрес для обработки HTTP-запросов.

==================================================================================

- **@Validated** включает валидацию на уровне класса или метода с использованием аннотаций Jakarta Validation (@NotNull, @Size, @Email и т. д.).
- **@RestController (Spring)** — сочетает аннотации @Controller и @ResponseBody для RESTful сервисов.
- **@ResponseBody (Spring)** — возвращает данные в теле HTTP-ответа (обычно в формате JSON).
- **@RequestBody** - преобразует JSON (или XML) из HTTP-запроса в объект Java.
- **@NotNull** - Описание: Указывает, что поле не может быть null.
- **@Size** - Ограничивает длину строки, массива или коллекции.**
- **@Min и @Max** - Устанавливает минимальное и максимальное значение для числовых полей.
- **@Email** - Проверяет, что строка имеет формат email.
- **@Valid** - проверяет данные перед обработкой и автоматически выбрасывает ошибки, если что-то не так.
==================================================================================

- **@Bean** - указывает Spring создавать объект (бин) из метода и управлять им в контексте приложения.
- **@Configuration** - Помечает класс как конфигурационный, который содержит бины для Spring контейнера
- **@EnableWebSecurity** - Включает настройку безопасности в приложении Spring, что позволяет использовать конфигурации для защиты веб-ресурсов (например, ограничение доступа, аутентификация и авторизация).
- **@EnableMethodSecurity** - Включает поддержку безопасности на уровне методов, позволяя использовать аннотации безопасности, такие как @PreAuthorize или @Secured, для ограничения доступа к методам.
- **@Autowired** - автоматически внедряет зависимости в ваш класс.
- **@Component** - управляет созданием объектов и их зависимостей.
==================================================================================
- **@OneToMany** - указывает, что один пользователь может иметь несколько заказов.
- **@ManyToOne** указывает, что каждый заказ принадлежит одному пользователю или много товаров могут принадлежать одному заказу.
- @JoinColumn - указывает, какое поле в таблице будет внешним ключом, связывающим две таблицы.
--------------------------------------------------------------------------------------------------------------------------------------------

**Общие Термины:**

- **Postman** — инструмент для тестирования API. Позволяет отправлять GET, POST и другие запросы к серверу.
- **JDBC (Java Database Connectivity)** — стандартный API для работы с базами данных в Java.
- **Maven** — инструмент для управления зависимостями и сборкой Java-проектов. Конфигурация происходит через файл `pom.xml`.
- **JSON (JavaScript Object Notation)** — формат данных для обмена информацией между клиентом и сервером, часто используется в REST API.
- **REST (Representational State Transfer)** — стиль разработки API, который использует HTTP-запросы для работы с ресурсами (например, GET, POST, PUT, DELETE).
==================================================================================
--------------------------------------------------------------------------------------------------------------------------------------------

- **Singleton** - Гарантирует, что в программе создаётся только один объект определённого класса.
// Представь, что в городе есть только один мэр. Люди не могут выбрать второго мэра, они всегда обращаются к одному.
- **Factory** - Создаёт объекты без указания точного класса.
// Ты заходишь в кафе и заказываешь кофе. Бариста готовит тебе капучино или эспрессо.💡 Ты не знаешь, как именно готовится кофе, но получаешь результат!
- **Observer** - Один объект следит за изменениями другого и реагирует автоматически.
//Подписка на YouTube — если блогер выложил новое видео, ты сразу получаешь уведомление.
- **Strategy** - Позволяет менять поведение объекта во время выполнения.
// Ты можешь оплатить заказ картой, PayPal или наличными. Выбор зависит от ситуации, но принцип оплаты один.

- **Repository** — это компонент, который отвечает за взаимодействие с базой данных. (//EmployeeRepository)
- **Service** — это компонент, который инкапсулирует бизнес-логику приложения. Он связывает репозиторий и контроллер, но сам не должен напрямую заниматься обработкой HTTP-запросов или взаимодействием с базой данных.
(//Service Repository)
- **Controller** — это компонент, который обрабатывает HTTP-запросы и передает управление в соответствующие сервисы для выполнения логики. Контроллеры — это, по сути, "мосты" между клиентом (пользователем) и сервером, отвечающие за взаимодействие с клиентской частью приложения. (//Employee Controller)
- **Mapper** — это компонент, который преобразует данные из одного формата в другой, обычно из одной модели в другую (например, из сущности базы данных в DTO)
- **Impl (сокращение от Implementation)** — наименование для класса, который реализует интерфейс.Это класс, который предоставляет конкретную реализацию методов из интерфейса EmployeeService
- **DTO (Data Transfer Object)** — это объект, предназначенный для передачи данных между слоями приложения, обычно между сервером и клиентом

--------------------------------------------------------------------------------------------------------------------------------------------

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.