claudegoodies
Skill

jpa-patterns

From affaan-m

Patrones JPA/Hibernate para diseño de entidades, relaciones, optimización de consultas, transacciones, auditoría, indexación, paginación y pooling en Spring Boot.

Provides JPA/Hibernate code patterns for entities, relations, queries, transactions, auditing, indexing, pagination and HikariCP pooling in Spring Boot.

Use it when

  • Designing JPA entities and table mappings
  • Fixing N+1 queries or choosing fetch strategies
  • Configuring pagination, sorting, or custom repository methods
  • Tuning HikariCP pool size or reviewing indexing strategy

Skip it if

  • Not using Spring Boot with JPA/Hibernate
  • Not using PostgreSQL/relational DB with Flyway or Liquibase migrations
  • Just need a quick single query, not full entity/repo design

Facts

Repository
affaan-m/ECC
Status
Actively maintained
Last commit

Source preview

The instructions Claude Code reads when this skill runs.

# Patrones JPA/Hibernate

Usar para modelado de datos, repositorios y ajuste de rendimiento en Spring Boot.

## Cuándo Activar

- Diseñar entidades JPA y mapeos de tablas
- Definir relaciones (@OneToMany, @ManyToOne, @ManyToMany)
- Optimizar consultas (prevención de N+1, estrategias de fetch, proyecciones)
- Configurar transacciones, auditoría o soft deletes
- Configurar paginación, ordenamiento o métodos de repositorio personalizados
- Ajustar el connection pool (HikariCP) o caché de segundo nivel

## Diseño de Entidades

```java
@Entity
@Table(name = "markets", indexes = {
  @Index(name = "idx_markets_slug", columnList = "slug", unique = true)
})
@EntityListeners(AuditingEntityListener.class)
public class MarketEntity {
  @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  @Column(nullable = false, length = 200)
  private String name;

  @Column(nullable = false, unique = true, length = 120)
  private String slug;

  @Enumerated(EnumType.STRING)
  private MarketStatus status = MarketStatus.ACTIVE;

  @CreatedDate private Instant createdAt;
  @LastModifiedDate private Instant updatedAt;
}
```

Habilitar auditoría:
```java
@Configuration
@EnableJpaAuditing
class JpaConfig {}
```

## Relaciones y Prevención de N+1

```java
@OneToMany(mappedBy = "market", cascade = CascadeType.ALL, orphanRemoval = true)
private List<PositionEntity> positions = new ArrayL
View full source on GitHub →

Other skills