Пользовательский класс StoredProcedure как компонент Spring и расширяет jdb c StoredProcedure - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть собственный класс хранимых процедур, который расширяет jdb c .StoredProcedure, но я аннотировал этот класс с помощью Spring @Component, чтобы перевести этот компонент класса в контекст Spring.

Почему я это делаю?

  1. Я хотел добавить Spring-Retry для метода execute, который будет работать только для компонентов Spring
  2. Я хотел повторно использовать скомпилированную StoredProcedure вместо создания нового объекта и повторной компиляции каждый раз, таким образом я могу повторно использовать скомпилированную StoredProcedure каждый раз.

что-то не так с такой реализацией? Есть ли какие-либо проблемы, которые мы можем видеть с этим основанным на компоненте Spring StoredProcedure?

Пример:

    @Component
public class ExampleStoredProcedure extends StoredProcedure {
  @Autowired
  private DataSource dataSource;

  @Postconstruct
  public void init() {
     super.setDataSource(dataSource);
     setSql("stored_procedure_name");
//TODO      declare parameters
     compile();
  }

  public void execute(){
    //Todo set all parameters to ParameterSource
    super.execute(parameterSource);
  }
}

1 Ответ

0 голосов
/ 18 апреля 2020

Попробуйте реализовать многоуровневую архитектуру приложений, в которой вы аннотируете свои сервисы с помощью Spring Retry, как в этом примере:

https://dzone.com/articles/spring-retry-way-to-handle-failures

Эти методы обслуживания могут определять границы транзакций и вызовите методы ваших уровней персистентности данных, которые могут быть основаны на стандартизированных способах данных Spring для вызова хранимых процедур и управления соединениями с базой данных и т. д. c.

См. дополнительную информацию о Spring и архитектуре, например, это краткое введение:

https://www.petrikainulainen.net/software-development/design/understanding-spring-web-application-architecture-the-classic-way/

...