К основному содержанию
скилл CX Codex

spring-data-jpa — скилл для Claude Code: что делает и как установить

Шаблоны и правила для слоя персистентности на Spring Data JPA: создание репозиториев, пагинация, аудит сущностей и настройка транзакций.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add giuseppe-trisciuoglio/developer-kit --skill spring-data-jpa -a claude-code
Открыть на GitHub

Что делает spring-data-jpa

Скилл даёт ассистенту инструкции по проектированию уровня доступа к данным в приложениях на Spring Data JPA. Внутри собраны правила для наследования JpaRepository, составления производных методов и сложных выборок через @Query, а также примеры безопасного удаления дочерних записей с orphanRemoval.

Инструкции требуют выносить передачу данных в DTO вроде Java-рекордов или классов с @Value, запрещая отдавать сущности JPA напрямую в REST API. Для чтения предписано использовать @Transactional(readOnly = true). Это повод сразу проверить сервисный слой на лишние операции записи, чтобы база данных не держала лишние блокировки.

Отдельный блок посвящён оптимизации. Скилл советует исключать проблему N+1 с помощью @EntityGraph или JOIN FETCH, анализировать тяжёлые запросы через EXPLAIN ANALYZE и избегать случайной фрагментации индексов при использовании UUID в качестве первичных ключей.

Какие задачи решает

  • настроить репозитории с JpaRepository и кастомными запросами @Query
  • реализовать пагинацию с Pageable и PageRequest
  • внедрить аудит сущностей через AuditingEntityListener
  • предотвратить проблему N+1 с помощью @EntityGraph

Примеры запросов агенту

  • Создай репозиторий ProductRepository с пагинацией и кастомным @Query для выборки по цене
  • Настрой сущность Order с полями аудита и связью OneToMany к элементам заказа

Как установить spring-data-jpa

1Через Skills CLI (Vercel)

npx skills add giuseppe-trisciuoglio/developer-kit --skill spring-data-jpa -a claude-code

2Вручную: положить файлы

~/.claude/skills/spring-data-jpa/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/spring-data-jpa/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора93

typescript-docs Создаёт документацию TypeScript с JSDoc, TypeDoc и ADR. Пригодится для описания API, решений по архитектуре и кода на популярных фреймворках. CX Codex +1 4 200установок nestjs Подсказывает агенту паттерны NestJS: CRUD-модули, JWT-гарды, схемы Drizzle и миграции. Пригодится, когда собираешь API на NestJS. CX Codex +1 4 200установок unit-test-boundary-conditions Скилл подсказывает, как писать юнит-тесты на граничные значения в Java: минимумы, максимумы, null, пустые коллекции, переполнение и точность double. CX Codex +1 4 100установок turborepo-monorepo Скилл ведёт агента по настройке Turborepo: workspace, задачи в turbo.json, тестовые пайплайны и кэш сборки. CX Codex +1 4 100установок spring-boot-security-jwt Скилл с готовыми шаблонами JWT-аутентификации для Spring Boot 3.5.x: генерация токенов через JJWT, фильтры, RBAC и OAuth2. CX Codex +1 4 100установок drawio-logical-diagrams Генерирует файлы .drawio в нативном формате XML для логических схем, архитектуры систем, нотаций BPMN и UML. Пригодится для визуализации логики без привязки к конкретным облачным сервисам. CX Codex +1 4 000установок clean-architecture Помогает строить Java 21+ приложения на Spring Boot 3.5+ с чистыми слоями, портами и адаптерами. Нужен при рефакторинге связанного кода или проектировании доменной модели. CX Codex +1 4 000установок spring-boot-openapi-documentation Скилл помогает агенту настроить SpringDoc OpenAPI 3.0 и Swagger UI в проекте на Spring Boot 3.x и разметить эндпоинты аннотациями. CX Codex +1 4 000установок

Похожие

convert-jpa-to-spring-data-cosmos официальный github Пошаговое правило для Copilot: переводит Spring Boot проект с JPA на Azure Cosmos DB через Spring Data Cosmos. Пригодится, когда миграция уже решена и нужен план. ★ 40 418звёзд репо jpa-patterns affaan-m Скилл подсказывает правила моделирования JPA-сущностей, устранения проблемы N+1 и настройки пула HikariCP в Spring Boot. Пригодится при написании репозиториев и оптимизации запросов. CX Codex +1 4 600установок java-spring-boot pluginagentmarketplace Скилл помогает создавать бэкенд на Spring Boot 3: настраивать REST API, аутентификацию через Spring Security, доступ к базам через Spring Data и мониторинг Actuator. CX Codex +1 11 800установок spring-boot-engineer https://github.com/Jeffallan Разворачивает архитектуру Spring Boot 3.x, контроллеры, репозитории Spring Data JPA и правила Spring Security 6. Пригодится при сборке REST API, реактивных сервисов и микросервисов на Java. CX Codex +1 8 400установок spring-boot-development manutej Скилл для ИИ-агента, который подсказывает, как писать Spring Boot: авто-конфигурация, внедрение зависимостей, REST-контроллеры, Spring Data и Spring Security. CX Codex +1 534установок spring-boot-patterns decebals Скилл задаёт структуру Spring Boot-проекта и шаблоны для контроллеров, сервисов и репозиториев. Пригодится, когда агент пишет новый код или разбирает чужой. CX Codex +1 322установок

Рядом в теме «Бэкенд и API»

Всё по теме «Бэкенд и API» →

Вопросы о spring-data-jpa

Как установить spring-data-jpa в Claude Code?

Выполните команду npx skills add giuseppe-trisciuoglio/developer-kit --skill spring-data-jpa -a claude-code. Также можно вручную сохранить файл по пути ~/.claude/skills/spring-data-jpa/SKILL.md.

Что делает скилл spring-data-jpa?

Скилл задаёт правила генерации сущностей, репозиториев, пагинации и транзакций для Spring Data JPA.

Почему скилл запрещает отдавать сущности JPA напрямую в REST API?

Это защищает приложение от ошибок ленивой загрузки при сериализации. Вместо сущностей правила требуют передавать данные через DTO на базе Java-рекордов или @Value.

Исходный текст

SKILL.md · MIT
---
name: spring-data-jpa
description: Provides patterns to implement persistence layers with Spring Data JPA. Use when creating repositories, configuring entity relationships, writing queries (derived and `@Query`), setting up pagination, database auditing, transactions, UUID primary keys, multiple databases, and database indexing.
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
---

# Spring Data JPA

## Overview

Provides patterns for Spring Data JPA repositories, entity relationships, queries, pagination, auditing, and transactions.

## When to Use

Creating repositories with CRUD operations, entity relationships, `@Query` annotations, pagination, auditing, or UUID primary keys.

## Instructions

### Create Repository Interfaces

To implement a repository interface:

1. **Extend the appropriate repository interface:**
   ```java
   @Repository
   public interface UserRepository extends JpaRepository<User, Long> {
       // Custom methods defined here
   }
   ```

2. **Use derived queries for simple conditions:**
   ```java
   Optional<User> findByEmail(String email);
   List<User> findByStatusOrderByCreatedDateDesc(String status);
   ```

3. **Implement custom queries with `@`Query:**
   ```java
   @Query("SELECT u FROM User u WHERE u.status = :status")
   List<User> findActiveUsers(@Param("status") String status);
   ```

### Configure Entities

1. **Define entities with proper annotations:**
   ```java
   @Entity
   @Table(name = "users")
   public class User {
       @Id
       @GeneratedValue(strategy = GenerationType.IDENTITY)
       private Long id;

       @Column(nullable = false, length = 100)
       private String email;
   }
   ```

2. **Configure relationships using appropriate cascade types:**
   ```java
   @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
   private List<Order> orders = new ArrayList<>();
   ```
   **Validation:** Test cascade behavior with a small dataset before applying to production data. Verify delete operations don't cascade unexpectedly.

3. **Set up database auditing:**
   ```java
   @CreatedDate
   @Column(nullable = false, updatable = false)
   private LocalDateTime createdDate;
   ```

### Apply Query Patterns

1. **Use derived queries for simple conditions**
2. **Use `@`Query for complex queries**
3. **Return Optional<T> for single results**
4. **Use Pageable for pagination**
5. **Apply `@`Modifying for update/delete operations**

### Manage Transactions

1. **Mark read-only operations with `@`Transactional(readOnly = true)**
2. **Use explicit transaction boundaries for modifying operations**
3. **Specify rollback conditions when needed**

### Validate and Optimize

**1. Verify entity configuration:**
- Test cascade behavior in a transaction before production deployment
- Validate bidirectional relationships sync correctly

**2. Optimize query performance:**
- Run `EXPLAIN ANALYZE` on queries against large tables
- If performance issues detected: add indexes → verify with EXPLAIN → repeat
- Use `@EntityGraph` to prevent N+1 queries

**3. Validate pagination:**
- Ensure indexed columns support pagination queries
- Test with large datasets to verify cursor stability

## Examples

### Basic CRUD Repository

```java
@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
    // Derived query
    List<Product> findByCategory(String category);

    // Custom query
    @Query("SELECT p FROM Product p WHERE p.price > :minPrice")
    List<Product> findExpensiveProducts(@Param("minPrice") BigDecimal minPrice);
}
```

### Pagination Implementation

```java
@Service
public class ProductService {
    private final ProductRepository repository;

    public Page<Product> getProducts(int page, int size) {
        Pageable pageable = PageRequest.of(page, size, Sort.by("name").ascending());
        return repository.findAll(pageable);
    }
}
```

### Entity with Auditing

```java
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Order {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @CreatedDate
    @Column(nullable = false, updatable = false)
    private LocalDateTime createdDate;

    @LastModifiedDate
    private LocalDateTime lastModifiedDate;

    @CreatedBy
    @Column(nullable = false, updatable = false)
    private String createdBy;
}
```

## Best Practices

### Entity Design
- Use constructor injection exclusively (never field injection)
- Prefer immutable fields with `final` modifiers
- Use Java records (16+) or `@Value` for DTOs
- Always provide proper `@Id` and `@GeneratedValue` annotations
- Use explicit `@Table` and `@Column` annotations

### Performance Optimization
- Use appropriate fetch strategies (LAZY vs EAGER)
- Implement pagination for large datasets
- Use database indexes for frequently queried fields
- Consider using `@EntityGraph` to avoid N+1 query problems

### Reference Documentation

For comprehensive examples, detailed patterns, and advanced configurations, see:

- [Examples](references/examples.md) - Complete code examples for common scenarios
- [Reference](references/reference.md) - Detailed patterns and advanced configurations

## Constraints and Warnings

- Never expose JPA entities directly in REST APIs; always use DTOs to prevent lazy loading issues.
- Avoid N+1 query problems by using `@EntityGraph` or `JOIN FETCH` in queries.
- Be cautious with `CascadeType.REMOVE` on large collections as it can cause performance issues.
- Do not use `EAGER` fetch type for collections; it can cause excessive database queries.
- Avoid long-running transactions as they can cause database lock contention.
- Use `@Transactional(readOnly = true)` for read operations to enable optimizations.
- Be aware of the first-level cache; entities may not reflect database changes within the same transaction.
- UUID primary keys can cause index fragmentation; consider using sequential UUIDs or Long IDs.
- Pagination on large datasets requires proper indexing to avoid full table scans.

© giuseppe-trisciuoglio · MIT · giuseppe-trisciuoglio/developer-kit

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой