Class ExamplesController

java.lang.Object
io.queryanalyzer.example.controller.ExamplesController

@RestController @RequestMapping("/api/examples") public class ExamplesController extends Object
  • Constructor Details

    • ExamplesController

      public ExamplesController(UserRepository userRepository, OrderRepository orderRepository, org.springframework.jdbc.core.JdbcTemplate jdbcTemplate)
  • Method Details

    • nPlusOneBad

      @GetMapping("/bad/n-plus-one") @Transactional(readOnly=true) public org.springframework.http.ResponseEntity<List<Map<String,Object>>> nPlusOneBad()
    • nPlusOneGood

      @GetMapping("/good/n-plus-one-fixed") @Transactional(readOnly=true) public org.springframework.http.ResponseEntity<List<Map<String,Object>>> nPlusOneGood()
    • multipleNPlusOne

      @GetMapping("/bad/multiple-n-plus-one") @Transactional(readOnly=true) public org.springframework.http.ResponseEntity<List<Map<String,Object>>> multipleNPlusOne()
    • slowQuery

      @GetMapping("/bad/slow-query") @Transactional(readOnly=true) public org.springframework.http.ResponseEntity<List<Map<String,Object>>> slowQuery()
    • queryInLoop

      @GetMapping("/bad/query-in-loop") @Transactional(readOnly=true) public org.springframework.http.ResponseEntity<List<Map<String,Object>>> queryInLoop()
    • queryInLoopFixed

      @GetMapping("/good/query-in-loop-fixed") @Transactional(readOnly=true) public org.springframework.http.ResponseEntity<List<Map<String,Object>>> queryInLoopFixed()
    • parameterizedQuery

      @GetMapping("/parameterized/{id}") @Transactional(readOnly=true) public org.springframework.http.ResponseEntity<Map<String,Object>> parameterizedQuery(@PathVariable("id") Long id)
    • everythingWrong

      @GetMapping("/bad/everything-wrong") @Transactional(readOnly=true) public org.springframework.http.ResponseEntity<List<Map<String,Object>>> everythingWrong()
      Combines multiple anti-patterns to trigger multiple issues: - N+1 query pattern (orders) - Slow query (via SLEEP)
    • bestPractices

      @GetMapping("/good/best-practices") @Transactional(readOnly=true) public org.springframework.http.ResponseEntity<List<Map<String,Object>>> bestPractices()
    • testRateLimit

      @GetMapping("/test/rate-limit") @Transactional(readOnly=true) public org.springframework.http.ResponseEntity<String> testRateLimit()