• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

utworzyć obiekt czy się do niego odwoływać

0 głosów
417 wizyt
pytanie zadane 2 lutego 2022 w Java przez Lulex Użytkownik (820 p.)

Cześć!

Czy gdy przesyłam na endpoint jakiś obiekt w RequestBody to lepiej jest się do niego odwoływać czy lepiej będzie utworzyć nowy obiekt z obiektu w metodzie?

wersja nr 1

@GetMapping
public  ResponseEntity exampleMethod(@RequestBody CarInGarage carInGarage) {
    ... carInGarage.getCar.getModel();
    ... carInGarage.getNumberOfSeats();
}

wersja nr 2

@GetMapping
public  ResponseEntity exampleMethod(@RequestBody CarInGarage carInGarage) {
    Car car = carInGarage.getCar();

    ... car.getNumberOfSeats;
    ... car.getModel;
}

Czy liczba użyć ma tutaj znacznie? Będę się odwoływał do tego obiektu z 3 - 6 razy.

W przypadku gdy wyciągam obiekt z bazy i się odwołuję do jego pól lepiej jest go wyciągnąć raz i utworzyć niż katować bazę danych zapytaniami, prawda?

1 odpowiedź

+1 głos
odpowiedź 2 lutego 2022 przez Wiciorny Ekspert (282,390 p.)

Uproszczając to, tak aby nie wdrażać tutaj tego co dzieje się na wątkach i tego czym jest Java Memory Model bo to i tak na początku jest zbyt trudne, generalnie takie operacje mają znaczenie jest kilka ważnych kwesti jaka też ma być oczekiwana z twojej strony sytuacja? 

- po pierwsze w obiektowym programowaniu dążymy do tego żeby obiekty były immutable, nie ważne jak to osiągamy w pewnym momencie, ale ważne aby jak najczęściej to się udawało w miare możliwości
Czy liczba użyc ma znaczenie ?
- nie ma to jest odowłanie się do właściwości obiektu, tzn nie ma ona gdy odwołujesz się raz do danej właściwości samo odwołąnie jest niczym, gorzej jesli masz złożoną funkcje- jako działanie na obiekcie, która jeszcze go modyfikuje to lepiej wtedy przemyśleć czy nie napisać lepiej metody jeśli w ramach 1 akcji ona ma się powielać 

 

carInGarage.getCar.getModel();

tu nie tworzysz nowego obiektu, tylko jesli do czegoś to przypiszesz - to tworzysz referencje- wiązanie do adresu w pamięci gdzie są te obiekty...  więc jeśli potem masz kilka odwołań do tego samego adresu, warto go przechować włąsnie przypisując do zmiennej np  carModels.

   Car car = carInGarage.getCar();

Tutaj  tez nie tworzysz nowego obiektu tylko przypisujesz własnie to co mówiłem -> referencje do obiektuCar... nic więcej to nie tworzenie nowego obiektu i jeśli potem stosujesz car....jakaś funkcja to faktycznie to jest czytelniejsze i lepsze rozwiązanie niż poprzednio. 
Ale tutaj nigdzie nie katujesz bazy ... widać że nie rozumiesz nawet tego co piszesz nawet jeśli odwołasz się z obiektu car do metody z bazy to  korzystając z hibernate/springa on za Ciebie stuknie do bazy, docelowo nei załaduje pokrewnych obiektów i całej encji bo to tzw. LazyLoading, zresztą po co baza ma wykonywac zapytanie ... po np silniki w samochodzie jak na razie użytkownik potrzebuje sam samochód, może wcale nie bedzie chcial informacji o silniku to póki o to NIE POPROSI nie będzie strzała do bazy 

 

 

Czy gdy przesyłam na endpoint jakiś obiekt w RequestBody to lepiej jest się do niego odwoływać czy lepiej będzie utworzyć nowy obiekt z obiektu w metodzie?

nigdzie na obu przypadkach nie tworzysz nowego obiektu tylko zawsze sie odwolujesz do tego samego raz bezposrednio a potem w  nr 2 przez inna referencje do tego samego obiektu  

1
komentarz 2 lutego 2022 przez DziQu Początkujący (420 p.)
Mądrego warto posłuchać :)
komentarz 2 lutego 2022 przez Wiciorny Ekspert (282,390 p.)
pytać warto w tej kwestii zawsze służę pomocą jakby coś jeszcze nie było jasne pisz śmiało.

Podobne pytania

0 głosów
0 odpowiedzi 483 wizyt
0 głosów
2 odpowiedzi 347 wizyt
pytanie zadane 31 marca 2018 w Java przez devo Nowicjusz (120 p.)
0 głosów
1 odpowiedź 758 wizyt
pytanie zadane 12 lutego 2017 w Java przez Ssslimer Nowicjusz (240 p.)

93,604 zapytań

142,529 odpowiedzi

322,997 komentarzy

63,092 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...