Typy prymitywane, a Spring Data i MVC

0

Hej, zastanawiam się jakie podejście wykorzystać dla kontrolerów i repozytoriów w Springu. Czy lepiej używać w PathVariable (dla required = true) z typami prymitywnymi i wtedy mieć spokój z nullami oraz lepsza wydajność. Czy takie podejście może prowadzić do jakichś nieoczekiwanych mapowań nulla na zero :) ?

Tak samo w przypadku repozytorium, czy bezpieczniejsze będzie użycie tutaj obiektowego, czy może prymitywnego typu?

Według Effective Javy niby najlepiej używać typów prymitywnych gdzie się da, ale w przypadku magi Springa nie jestem przekonany :)

    @GetMapping(value = "sloiki/{sloikId}")
    public RequestDto getSloikById(@PathVariable("sloikId") Long sloikId) {
           return RequestDto.of(repository.find(sloikId));
    }
    @GetMapping(value = "sloiki/{sloikId}")
    public RequestDto getSloikById(@PathVariable("sloikId") long sloikId) {
           return RequestDto.of(repository.find(sloikId));
    }
    @Query("SELECT sloik FROM Sloik sloik where sloik.id == :id")
    long find(@Param("id") long id);

    @Query("SELECT sloik FROM Sloik sloik where sloik.id == :id")
    Long find(@Param("id") Long id);

1
  1. Dlaczego uważasz, że wydajność jest tutaj problemem?
  2. Nie ma to znaczenia tak długo jak nie wywalisz się na requeście z nullem
2

Jeśli chodzi o wydajność - jak masz wywołania REST/Http i bazę danych to wpływ takiego Long vs long jest niemierzalny (nawet jak będzie tam setki takich Longów).

(Long)null nie konwertuje się n 0L tylko na NullPointerException.

Im szybciej wyjaśnimy sytuację (że nie akteptujemy nulli - co to za ID jest - null?) i wywalimy się z NPE tym lepiej. I to jest powód na longa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1