Skip to content

Commit df429e0

Browse files
Copilotbrunoborges
andauthored
Add Russian translations for enterprise patterns
Translate 16 enterprise pattern content files from German to Russian. Creates translations/content/ru/enterprise/ with all YAML files, preserving structure, keys, emoji icons, and Java identifiers. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: brunoborges <129743+brunoborges@users.noreply.github.com>
1 parent 1076ac8 commit df429e0

16 files changed

+272
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: EJB Timer vs. Jakarta Scheduler
2+
oldApproach: EJB TimerService
3+
modernApproach: ManagedScheduledExecutorService
4+
summary: Замените громоздкие EJB-таймеры на ManagedScheduledExecutorService из Jakarta Concurrency для более простого планирования задач.
5+
explanation: EJB-таймеры требуют @Stateless- или @Singleton-бина с @Timeout-колбэком и XML- или аннотационными выражениями расписания. Jakarta Concurrency предоставляет ManagedScheduledExecutorService, использующий привычный API планирования java.util.concurrent. Результат — меньше шаблонного кода, упрощённое модульное тестирование и отсутствие зависимости от EJB-контейнера.
6+
whyModernWins:
7+
- icon: 🪶
8+
title: Меньше шаблонного кода
9+
desc: "Никаких @Timeout-колбэков или ScheduleExpression — используйте стандартный API ScheduledExecutorService."
10+
- icon: 🧪
11+
title: Лучшая тестируемость
12+
desc: Простые методы и заглушки для Executor делают модульное тестирование без EJB-контейнера простым.
13+
- icon: ☁️
14+
title: Совместимость с облачными подходами
15+
desc: Управляемые Executor-ы интегрируются в жизненный цикл контейнера и работают в облегчённых средах выполнения.
16+
support:
17+
description: "Доступно начиная с Jakarta EE 10 / Concurrency 3.0"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: EJB против CDI
2+
oldApproach: EJB
3+
modernApproach: CDI-бин
4+
summary: Замените громоздкие EJB облегчёнными CDI-бинами для внедрения зависимостей и управления транзакциями.
5+
explanation: CDI (Contexts and Dependency Injection) предоставляет те же возможности внедрения зависимостей и управления транзакциями, что и EJB, но в виде простых Java-классов без специфичных для контейнера интерфейсов или суперклассов. Области видимости, такие как @ApplicationScoped и @RequestScoped, управляют жизненным циклом, а @Transactional заменяет обязательную транзакционную семантику EJB.
6+
whyModernWins:
7+
- icon: 🪶
8+
title: Облегчённость
9+
desc: CDI-бины — это простые Java-классы без EJB-специфичных интерфейсов или дескрипторов.
10+
- icon: 💉
11+
title: Единое внедрение
12+
desc: "@Inject работает единообразно для любого управляемого бина, JAX-RS-ресурса и компонента Jakarta EE."
13+
- icon: 🧪
14+
title: Простое модульное тестирование
15+
desc: Простые классы без EJB-прокси-overhead легко инстанциировать и заменять заглушками.
16+
support:
17+
description: Широко доступно начиная с Jakarta EE 8 / Java 11
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: Маппинг JDBC ResultSet vs. JPA Criteria API
2+
oldApproach: JDBC ResultSet
3+
modernApproach: JPA Criteria API
4+
summary: Замените ручное маппирование JDBC ResultSet на типобезопасный Criteria API JPA для динамических запросов.
5+
explanation: Сырой JDBC требует построения SQL-строк, установки параметров по индексу и ручного маппинга каждого столбца ResultSet — процесс, подверженный ошибкам и незаметно ломающийся при изменении схемы. JPA Criteria API формирует запросы программно с помощью типобезопасного паттерна Builder. Имена столбцов проверяются по модели сущностей, маппинг результатов выполняется автоматически, а сложные динамические запросы легко компонуются без конкатенации строк.
6+
whyModernWins:
7+
- icon: 🔒
8+
title: Типобезопасные запросы
9+
desc: Criteria Builder выявляет неверные имена полей и ошибки типов на этапе компиляции.
10+
- icon: 🗺️
11+
title: Автоматический маппинг
12+
desc: JPA отображает строки результата на объекты-сущности — никакого ручного извлечения столбец за столбцом.
13+
- icon: 🧩
14+
title: Компонуемые предикаты
15+
desc: Динамические WHERE-клаузулы легко строить с помощью and(), or() и повторно используемых объектов Predicate.
16+
support:
17+
description: Широко доступно начиная с Jakarta EE 8 / Java 11
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: JDBC против jOOQ
2+
oldApproach: Сырой JDBC
3+
modernApproach: jOOQ SQL DSL
4+
summary: Замените строковой SQL с сырым JDBC на типобезопасный плавный SQL DSL библиотеки jOOQ.
5+
explanation: "jOOQ (Java Object Oriented Querying) генерирует Java-код из схемы базы данных, превращая имена таблиц и столбцов в типобезопасные Java-константы. Плавный DSL отражает синтаксис SQL, делая запросы читаемыми и компонуемыми. Все параметры привязываются автоматически, что устраняет риски SQL-инъекций. В отличие от JPA/JPQL, jOOQ полностью поддерживает SQL — оконные функции, CTE, RETURNING-клаузулы и расширения, специфичные для поставщика, являются первоклассными возможностями."
6+
whyModernWins:
7+
- icon: 🔒
8+
title: Типобезопасные столбцы
9+
desc: Имена столбцов — это сгенерированные Java-константы; опечатки и ошибки типов становятся ошибками компиляции, а не ошибками времени выполнения.
10+
- icon: 📖
11+
title: Плавность SQL
12+
desc: DSL jOOQ точно отражает синтаксис SQL, поэтому сложные JOIN-ы, подзапросы и CTE остаются читаемыми.
13+
- icon: 🛡️
14+
title: Защита от инъекций по дизайну
15+
desc: Параметры всегда привязываются безопасно — никакой конкатенации строк означает никакого риска SQL-инъекции.
16+
support:
17+
description: Свободная версия jOOQ поддерживает все распространённые СУБД с открытым исходным кодом; более старые коммерческие СУБД требуют платной лицензии
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: JDBC против JPA
2+
oldApproach: JDBC
3+
modernApproach: JPA EntityManager
4+
summary: Замените многословный шаблонный код JDBC на объектно-реляционное отображение JPA и EntityManager.
5+
explanation: "JPA (Jakarta Persistence API) отображает Java-объекты на строки базы данных, устраняя необходимость в ручной обработке ResultSet и конкатенации SQL-строк. EntityManager предоставляет методы find(), persist() и JPQL-запросы, позволяя работать с доменными объектами вместо сырого SQL, пока контейнер управляет пулом соединений и транзакциями."
6+
whyModernWins:
7+
- icon: 🗺️
8+
title: Объектное отображение
9+
desc: Сущности — это простые аннотированные классы, не требующие ручного преобразования ResultSet в объект.
10+
- icon: 🔒
11+
title: Типобезопасные запросы
12+
desc: JPQL работает с типами и полями сущностей, а не с сырыми строками таблиц и столбцов.
13+
- icon:
14+
title: Встроенное кэширование
15+
desc: Кэши первого и второго уровня автоматически снижают количество обращений к базе данных.
16+
support:
17+
description: Широко доступно начиная с Jakarta EE 8 / Java 11
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: JNDI Lookup vs. CDI-инъекция
2+
oldApproach: JNDI Lookup
3+
modernApproach: CDI @Inject
4+
summary: Замените хрупкие JNDI-поиски по строкам на типобезопасную CDI-инъекцию для управляемых контейнером ресурсов.
5+
explanation: Традиционный паттерн JNDI вынуждает использовать строковые имена ресурсов, обрабатывать NamingException и управлять InitialContext. CDI-инъекция с @Inject (или @Resource для ресурсов контейнера) позволяет контейнеру автоматически связывать зависимости. Опечатки становятся ошибками компиляции, а классы легче тестировать, поскольку зависимости можно вводить напрямую.
6+
whyModernWins:
7+
- icon: 🔒
8+
title: Типобезопасная связка
9+
desc: Ошибки инъекции обнаруживаются во время развёртывания, а не во время выполнения через строковые поиски.
10+
- icon: 🗑️
11+
title: Никакого шаблонного кода
12+
desc: Устраняет создание InitialContext, JNDI-строки с именами и обработку NamingException.
13+
- icon: 🧪
14+
title: Тестируемость
15+
desc: Зависимости — это инъецируемые поля, которые легко заменить заглушками в модульных тестах.
16+
support:
17+
description: Широко доступно начиная с Jakarta EE 8 / Java 11
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: JPA против Jakarta Data
2+
oldApproach: JPA EntityManager
3+
modernApproach: Jakarta Data Repository
4+
summary: Объявите интерфейс репозитория и позвольте Jakarta Data автоматически сгенерировать реализацию DAO.
5+
explanation: Jakarta Data (Jakarta EE 11) превращает доступ к данным в чистое объявление интерфейса. Вы аннотируете интерфейс с @Repository и расширяете встроенный тип репозитория, например CrudRepository. Среда выполнения генерирует реализацию — включая производные запросы по именам методов, таким как findByName — так что не нужно ни шаблонного кода EntityManager, ни JPQL-строк, ни написанных вручную методов save/find.
6+
whyModernWins:
7+
- icon: 🪄
8+
title: Ноль шаблонного кода
9+
desc: Объявите интерфейс; контейнер генерирует полную реализацию DAO во время развёртывания.
10+
- icon: 🔍
11+
title: Производные запросы
12+
desc: Имена методов вроде findByNameAndStatus разбираются автоматически — никакого JPQL или SQL не требуется.
13+
- icon: 🔌
14+
title: Переносимость
15+
desc: Любая Jakarta EE 11-совместимая среда выполнения предоставит реализацию репозитория без привязки к поставщику.
16+
support:
17+
description: "Доступно начиная с Jakarta EE 11 / Java 21 (2024)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: JSF Managed Bean vs. CDI Named Bean
2+
oldApproach: "@ManagedBean"
3+
modernApproach: "@Named + CDI"
4+
summary: Замените устаревший JSF-@ManagedBean на CDI-@Named для единой модели внедрения зависимостей.
5+
explanation: Аннотации @ManagedBean и @ManagedProperty из JSF были объявлены устаревшими в Jakarta Faces 2.3 и удалены в Jakarta EE 10. CDI-замена использует @Named для доступа к бину через EL-выражения и @Inject для связывания зависимостей. Это унифицирует модель бинов — JSF-страницы, JAX-RS-ресурсы и EJB используют один и тот же CDI-контейнер.
6+
whyModernWins:
7+
- icon: 🔗
8+
title: Единая модель
9+
desc: Один CDI-контейнер управляет всеми бинами — JSF, REST и сервисные слои используют одно и то же внедрение.
10+
- icon: 🗑️
11+
title: Меньше шаблонного кода
12+
desc: "@Inject заменяет @ManagedProperty и обязательный сеттер-метод."
13+
- icon: 🔮
14+
title: Ориентация на будущее
15+
desc: "@ManagedBean был удалён в Jakarta EE 10; @Named — поддерживаемая замена."
16+
support:
17+
description: "CDI @Named доступен начиная с Java EE 6; @ManagedBean удалён в Jakarta EE 10"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: Ручное управление транзакциями JPA vs. декларативный @Transactional
2+
oldApproach: Ручная транзакция
3+
modernApproach: "@Transactional"
4+
summary: Замените многословные блоки begin/commit/rollback одной аннотацией @Transactional.
5+
explanation: Ручное управление транзакциями требует явных вызовов begin(), commit() и rollback(), обёрнутых в блоки try-catch — каждый сервисный метод повторяет этот шаблонный код. Аннотация @Transactional делегирует управление жизненным циклом контейнеру — он запускает транзакцию перед вызовом метода, фиксирует её при успехе и автоматически откатывает при RuntimeException.
6+
whyModernWins:
7+
- icon: 🗑️
8+
title: Никакого шаблонного кода
9+
desc: Одна аннотация заменяет повторяющиеся блоки begin/commit/rollback с try-catch.
10+
- icon: 🛡️
11+
title: Более безопасный откат
12+
desc: Контейнер гарантирует откат при непроверяемых исключениях — никакого риска забыть блок catch.
13+
- icon: 📐
14+
title: Декларативное управление
15+
desc: Распространение, изоляция и правила отката выражаются как атрибуты аннотации.
16+
support:
17+
description: Широко доступно начиная с Jakarta EE 8 / Java 11
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: Message-Driven Bean vs. Reactive Messaging
2+
oldApproach: Message-Driven Bean
3+
modernApproach: Reactive Messaging
4+
summary: Замените JMS Message-Driven Beans на MicroProfile Reactive Messaging для более простой обработки событий.
5+
explanation: Message-Driven Beans требуют реализации MessageListener, настройки свойств активации и ручной десериализации JMS-сообщений. MicroProfile Reactive Messaging использует простую аннотацию @Incoming на методе, который получает типизированные объекты напрямую. Конфигурация каналов выносится наружу, делая код независимым от брокера и значительно упрощая тестирование.
6+
whyModernWins:
7+
- icon: 🪶
8+
title: Минимальный код
9+
desc: "Один метод с @Incoming заменяет класс MDB, интерфейс MessageListener и конфигурацию активации."
10+
- icon: 🔌
11+
title: Независимость от брокера
12+
desc: Меняйте коннекторы Kafka, AMQP или JMS через конфигурацию, не изменяя код приложения.
13+
- icon: ☁️
14+
title: Подходит для облачных подходов
15+
desc: Противодавление реактивных потоков и облегчённая среда выполнения делают его идеальным для контейнеризированных развёртываний.
16+
support:
17+
description: "Доступно начиная с MicroProfile 4.0 / SmallRye Reactive Messaging"

0 commit comments

Comments
 (0)