Wpis z mikrobloga

Robicie dodatkowe interfejsy nad interfejsemi repozytoriów Spring Data JPA czy to nie ma sensu? Zmienialiście w ogóle kiedyś implementacje repository w projekcie? Mówię o czymś takim:

@Repository
@RequiredArgsConstructor
class JpaUserRepositoryAdapter implements UserRepository {

private final JpaUserRepository jpaUserRepository;

@OverRide
public User add(User user) {
return jpaUserRepository.save(user);
}

@OverRide
public Optional<User> getByMail(String mail) {
return jpaUserRepository.findByMail(mail);
}

@OverRide
public Optional<User> getByPasswordResetToken(UUID passwordResetToken) {
return jpaUserRepository.findByPasswordResetToken(passwordResetToken);
}

@OverRide
public boolean existsByMail(String mail) {
return jpaUserRepository.existsByMail(mail);
}
}

#java #programowanie #programista15k #naukaprogramowania
  • 3
  • Odpowiedz
@Nofenak: ofc np w projekcie mam jednocześnie bazę SQL i noSQL do innych rzeczy stąd w tym przypadku to podstawa. No i do tego dochodzi elasticssearch, więc 3 "bazy"

Nie wchodząc w szczegóły - niektóre encje muszę mieć w 2-3 miejscach
  • Odpowiedz
Nie jest to związane z architekturą hexagonalna - inaczej porty i adaptery?
Masz tutaj interfejs do bazy, i niezależnie od infrastruktury twoje repo działa tak samo. Możesz podmieniać silnik bazy bez zmian. Do tego możesz pisać testy logiki biznesowej których jedynym powodem do niepowodzenia jest sama logika a nie np baza czy błędne dane.
  • Odpowiedz