Pull to refresh

Comments 8

весь проект в прямом смысле слова покраснел:

А всё потому, что вы не использовали дополнительную прокладку в виде service над репозиториями. Нсли бы она была, красноты стало бы существенно меньше.

Дело не в прослойке, а в ошибках компиляции.


@Service
@RequiredArgsConstructor
public class Service
  private final SomeRepository someRepository;

  @Transactional
  public void foo(long id) {
    SomeEntity something = someRepository.findOne(someId);
    if (something == null) {
      something = someRepository.save(new SomeEntity());
    }
    useSomething(something);
}

На СБ1 (для которого Спринг Дата 1.*) это работает, на СБ2 (для которого Спринг Дата 2.*) нужно:


  • вызывать другой метод
  • сменить тип переменной something на Optional<SomeEntity>
  • заменить проверку пустой ссылки на Optional::isPresent или цепочку Optional::orElse/Optional::orElseGet

И так в каждом сервисе.

tsypanov, спасибо за статью — интересные кейсы и приятное изложение.
Вот уж правда обширная тема! Особенно про LDAP — хоть в музей относи)
Особенно про LDAP — хоть в музей относи

Да уж, впору начинать их коллекционировать и на собеседованиях просить соискателей рассказать о своих случаях.

Спасибо за статью. Жаль, что так мало =)

Тоже годнота, спасибо!

Sign up to leave a comment.

Articles