# 312-frameworks-spring-data-jdbc

Скилл для работы с Spring Data JDBC на Java records: сущности, репозитории, границы агрегатов, транзакции и борьба с N+1.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 329 установок · ★ 456
- Автор: Juan Antonio Breña Moral
- Лицензия: Apache-2.0 · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/jabrena/plinth/tree/HEAD/skills/312-frameworks-spring-data-jdbc/SKILL.md
- Обновлён: 2026-10-21
- HTML: https://affpapa.org/nevibecode/skills/312-frameworks-spring-data-jdbc

## Что делает

Скилл задаёт правила, по которым агент правит код на Spring Data JDBC. Внутри — работа с records как сущностями, аннотации `@Table` и `@Embedded`, паттерн репозитория, неизменяемые обновления через статические фабрики и хелперы `with*`. Отдельно разобрана семантика `save()`: INSERT или UPDATE зависит от того, пустой ли `@Id`.

Есть раздел про границы агрегатов: один репозиторий на корень агрегата, `Set` для связей внутри корня, внешние ключи между агрегатами. Плюс кастомные запросы через `@Query` с именованными параметрами, `@Transactional` на сервисах и загрузка одним запросом вместо N+1.

Перед любыми правками скилл требует, чтобы проект собирался: сначала `./mvnw compile` или `mvn compile`, и если компиляция падает — работа останавливается. После изменений прогоняется `./mvnw clean verify` или `mvn clean verify`. Это значит, что на сломанной сборке агент ничего не тронет, и вам не придётся разгребать правки поверх ошибок. Если задача сформулирована расплывчато, скилл останавливается и задаёт уточняющий вопрос.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add jabrena/plinth --skill 312-frameworks-spring-data-jdbc -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/312-frameworks-spring-data-jdbc/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/312-frameworks-spring-data-jdbc/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add jabrena/plinth --skill 312-frameworks-spring-data-jdbc -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/312-frameworks-spring-data-jdbc/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add jabrena/plinth --skill 312-frameworks-spring-data-jdbc -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/312-frameworks-spring-data-jdbc/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install jabrena/plinth 312-frameworks-spring-data-jdbc
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/312-frameworks-spring-data-jdbc/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add jabrena/plinth --skill 312-frameworks-spring-data-jdbc -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/jabrena/plinth --path skills/312-frameworks-spring-data-jdbc
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/312-frameworks-spring-data-jdbc/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add jabrena/plinth --skill 312-frameworks-spring-data-jdbc -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/jabrena/plinth/tree/HEAD/skills/312-frameworks-spring-data-jdbc/SKILL.md

## Когда брать
- переписать сущности на Java records
- разложить агрегаты и репозитории по границам
- убрать N+1 при загрузке связей
- добавить оптимистичную блокировку и доменные события
- проверить кастомные запросы на конкатенацию пользовательского ввода

## Примеры запросов агенту
- Проверь этот код на Spring Data JDBC и предложи правки по границам агрегатов
- Смоделируй агрегат на Java records и покажи, как обновлять его через with*-хелперы
- Найди в репозиториях места, где связи грузятся по одной, и убери N+1

## Похожие
- [spring-framework](https://affpapa.org/nevibecode/skills/spring-framework.md) — скилл · 731 установка
- [spring-boot](https://affpapa.org/nevibecode/skills/claude-mpm-team-spring-boot.md) — скилл · 309 установок
- [create-spring-boot-java-project](https://affpapa.org/nevibecode/skills/create-spring-boot-java-project.md) — скилл · 9516 установок
- [spring-boot-development](https://affpapa.org/nevibecode/skills/spring-boot-development.md) — скилл · 534 установки
- [spring-data-jpa](https://affpapa.org/nevibecode/skills/spring-data-jpa.md) — скилл · 4100 установок
- [spring-data-neo4j](https://affpapa.org/nevibecode/skills/spring-data-neo4j.md) — скилл · 3800 установок

Из того же набора: [jabrena/plinth](https://affpapa.org/nevibecode/by/jabrena/plinth.md) — 40 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
