Skip to main content
rule

java-springboot-jpa-cursorrules-prompt-file — Cursor rule

This rule guides Cursor when building Java Spring Boot projects with JPA, DTOs, and layered APIs. Use it when generated code should follow a fixed structure.

Install into Cursor · Manually: put the files in place All methods and platforms ↓
.cursor/rules/java-springboot-jpa-cursorrules-prompt-file.mdc
Open on GitHub

What java-springboot-jpa-cursorrules-prompt-file does

The rule targets Java 17, Spring Boot 3, Maven, Spring Web, Spring Data JPA, Thymeleaf, Lombok, and the PostgreSQL driver. It directs controllers to exchange data through DTOs, keeps database access in service implementations through repositories, and limits entities to database-result data.

Repository guidance covers JpaRepository, JPQL for @Query, and @EntityGraph for relationship queries. DTOs use record with compact constructors for input checks. Multiple sequential database operations should run inside a transaction. API methods return ResponseEntity<ApiResponse>, while GlobalExceptionHandler handles caught errors.

The rule is not enabled for every request because its metadata sets alwaysApply: false. Put the file at .cursor/rules/java-springboot-jpa-cursorrules-prompt-file.mdc in the Cursor project.

What it helps with

  • separate REST controllers, services, and repositories
  • model JPA entities with lazy relationships
  • move data between layers through DTOs
  • standardize API responses and exception handling
  • avoid N+1 queries for related records

Example prompts for the agent

  • Build a user REST API with Java 17 and Spring Boot 3 using this rule.
  • Split this endpoint into a RestController, service, ServiceImpl, repository, and DTO.
  • Add a relationship query with @EntityGraph and route errors through GlobalExceptionHandler.

How to install java-springboot-jpa-cursorrules-prompt-file

Manually: put the files in place

.cursor/rules/java-springboot-jpa-cursorrules-prompt-file.mdc

Frontmatter: description, globs, alwaysApply

Step by step, with commands for each platform: Cursor rules: .mdc files, four modes and what replaced .cursorrules

Questions about java-springboot-jpa-cursorrules-prompt-file

How do I install java-springboot-jpa-cursorrules-prompt-file in Cursor?

Place the file at .cursor/rules/java-springboot-jpa-cursorrules-prompt-file.mdc in the Cursor project.

What does java-springboot-jpa-cursorrules-prompt-file do?

It sets conventions for Java Spring Boot applications with JPA, including controller, service, and repository boundaries, DTO usage, and API error handling.

Which technologies does the rule target?

It targets Java 17, Spring Boot 3, Maven, Spring Web, Spring Data JPA, Thymeleaf, Lombok, and the PostgreSQL driver.

Source text

java-springboot-jpa-cursorrules-prompt-file.mdc · CC0-1.0
---
description: "Cursor rules for Java development with Springboot and JPA integration."
globs: **/*
alwaysApply: false
---
## Instruction to developer: save this file as .cursorrules and place it on the root project directory

AI Persona:

You are an experienced Senior Java Developer, You always adhere to SOLID principles, DRY principles, KISS principles and YAGNI principles. You always follow OWASP best practices. You always break task down to smallest units and approach to solve any task in step by step manner.

Technology stack:

Framework: Java Spring Boot 3 Maven with Java 17 Dependencies: Spring Web, Spring Data JPA, Thymeleaf, Lombok, PostgreSQL driver

Application Logic Design:

1. All request and response handling must be done only in RestController.
2. All database operation logic must be done in ServiceImpl classes, which must use methods provided by Repositories.
3. RestControllers cannot autowire Repositories directly unless absolutely beneficial to do so.
4. ServiceImpl classes cannot query the database directly and must use Repositories methods, unless absolutely necessary.
5. Data carrying between RestControllers and serviceImpl classes, and vice versa, must be done only using DTOs.
6. Entity classes must be used only to carry data out of database query executions.

Entities

1. Must annotate entity classes with @Entity.
2. Must annotate entity classes with @Data (from Lombok), unless specified in a prompt otherwise.
3. Must annotate entity ID with @Id and @GeneratedValue(strategy=GenerationType.IDENTITY).
4. Must use FetchType.LAZY for relationships, unless specified in a prompt otherwise.
5. Annotate entity properties properly according to best practices, e.g., @Size, @NotEmpty, @Email, etc.

Repository (DAO):

1. Must annotate repository classes with @Repository.
2. Repository classes must be of type interface.
3. Must extend JpaRepository with the entity and entity ID as parameters, unless specified in a prompt otherwise.
4. Must use JPQL for all @Query type methods, unless specified in a prompt otherwise.
5. Must use @EntityGraph(attributePaths={"relatedEntity"}) in relationship queries to avoid the N+1 problem.
6. Must use a DTO as The data container for multi-join queries with @Query.

Service:

1. Service classes must be of type interface.
2. All service class method implementations must be in ServiceImpl classes that implement the service class,
3. All ServiceImpl classes must be annotated with @Service.
4. All dependencies in ServiceImpl classes must be @Autowired without a constructor, unless specified otherwise.
5. Return objects of ServiceImpl methods should be DTOs, not entity classes, unless absolutely necessary.
6. For any logic requiring checking the existence of a record, use the corresponding repository method with an appropriate .orElseThrow lambda method.
7. For any multiple sequential database executions, must use @Transactional or transactionTemplate, whichever is appropriate.

Data Transfer object (DTo):

1. Must be of type record, unless specified in a prompt otherwise.
2. Must specify a compact canonical constructor to validate input parameter data (not null, blank, etc., as appropriate).

RestController:

1. Must annotate controller classes with @RestController.
2. Must specify class-level API routes with @RequestMapping, e.g. ("/api/user").
3. Use @GetMapping for fetching, @PostMapping for creating, @PutMapping for updating, and @DeleteMapping for deleting. Keep paths resource-based (e.g., '/users/{id}'), avoiding verbs like '/create', '/update', '/delete', '/get', or '/edit'
4. All dependencies in class methods must be @Autowired without a constructor, unless specified otherwise.
5. Methods return objects must be of type Response Entity of type ApiResponse.
6. All class method logic must be implemented in a try..catch block(s).
7. Caught errors in catch blocks must be handled by the Custom GlobalExceptionHandler class.

ApiResponse Class (/ApiResponse.java):

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ApiResponse<T> {
  private String result;    // SUCCESS or ERROR
  private String message;   // success or error message
  private T data;           // return object from service class, if successful
}

GlobalExceptionHandler Class (/GlobalExceptionHandler.java)

@RestControllerAdvice
public class GlobalExceptionHandler {

    public static ResponseEntity<ApiResponse<?>> errorResponseEntity(String message, HttpStatus status) {
      ApiResponse<?> response = new ApiResponse<>("error", message, null)
      return new ResponseEntity<>(response, status);
    }

    @ExceptionHandler(IllegalArgumentException.class)
    public ResponseEntity<ApiResponse<?>> handleIllegalArgumentException(IllegalArgumentException ex) {
        return new ResponseEntity<>(ApiResponse.error(400, ex.getMessage()), HttpStatus.BAD_REQUEST);
    }
}

© PatrickJS · CC0-1.0 · PatrickJS/awesome-cursorrules

Similar IDE rules

All IDE rules for Backend and APIs →

From the same set210

jest-unit-testing-cursorrules-prompt-file Guides Cursor to generate structured Jest unit tests in JavaScript and TypeScript. Enforces dependency mocking before imports and covers edge cases. ★ 41,024repo stars javascript-typescript-code-quality-cursorrules-pro A Cursor rule for cleaner JavaScript and TypeScript work. It guides code structure, comments, function order, and narrowly scoped edits. ★ 41,024repo stars javascript-chrome-apis-cursorrules-prompt-file A Cursor rule that points the AI agent at Chrome extension work: manifest, architecture, Chrome API usage. ★ 41,024repo stars javascript-astro-tailwind-css-cursorrules-prompt-f Cursor rule for Astro and Tailwind CSS projects. Enforces clean component composition, static page generation, and disciplined island hydration. ★ 41,024repo stars htmx-go-fiber-cursorrules-prompt-file A Cursor rule for Go projects built on Fiber with HTMX: it pins down folder layout, routing and template rendering so the agent stops improvising. ★ 41,024repo stars htmx-go-basic-cursorrules-prompt-file Guides Cursor when building Go web apps with HTMX. Enforces standard project layout, html/template rendering, and idiomatic request handling. ★ 41,024repo stars htmx-flask-cursorrules-prompt-file A Cursor rule for HTMX projects built with Flask. It sets guidance for templates, forms, routes, database access, and project layout. ★ 41,024repo stars htmx-django-cursorrules-prompt-file A Cursor rule that keeps the agent on Django rails while it writes HTMX code: templates, forms, CSRF, class-based views. ★ 41,024repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor