1
resposta

Criar um @Repository apenas para uma stored procedure específica

Boa tarde,

Eu tenho que chamar uma stored procedure no meu projeto spring boot passando pelo seguinte "fluxo":

  1. verificar se uma tabela temporária existe, se não exitir criá-la;
  2. executar inserts nessa tabela temporária;
  3. chamar a stored procedure passando vários parâmetros;
  4. fazer um select no resultset retornado pela stored procedure;
  5. dropar a tabela temporária.

Está correto(ou seria uma boa prática)criar um @Repository apenas para "mapear" esse comportamento da Stored Procedure? Ou seria melhor mapear esse comportamento em um @Component utilizando JdbcTemplate, tipo um DAO?

1 resposta

Oii Fernando, tudo bem?

Analisando as opções que você deu:

A criação de um @Repository dedicado para essa tarefa pode ser uma boa ideia se você deseja manter a lógica de acesso a dados encapsulada e separada do restante da aplicação. Isso é alinhado com o princípio de responsabilidade única e pode facilitar a manutenção e testabilidade do código. E, o uso de @Repository ajuda na clareza semântica, indicando que aquela classe é responsável pela interação com o banco de dados.

Por outro lado, utilizar um @Component com JdbcTemplate para criar um DAO (Data Access Object) é uma abordagem mais flexível e direta, especialmente para operações que não se encaixam perfeitamente no modelo de repositórios do Spring Data. Isso pode ser particularmente útil aqui, dado que você precisa executar uma sequência específica de operações (criar tabela, inserir dados, chamar a stored procedure, etc.) que não são típicas de um CRUD padrão.

Espero ter te ajudado.

Um abraço e bons estudos.