Random ID produktu

Odpowiedz Nowy wątek
2018-12-12 11:45
0

Witam wszystkich, jestem początkujący

Jako mam do napisania aplikacje zakupową.
Klasy:

  • klasa produkt -> z której dziedziczą klasa Telefon i klasa TV
  • klasa ProduktDB (ArrayList produktów)
  • klasa Zamówienia
  • klasa Klient
  • klasa Testowa (do instancjonowania i ustalania atrybutów)

Moje pytanie:
W jaki sposób tworzyć unikalny produktID, kiedy tworzony jest jakiś produkt. Czy mogę użyć static int ?

Pozostało 580 znaków

2018-12-12 12:16
1

Twój problem już został rozwiązany. W Javie jest specjalna klasa:
https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html
UUID Tworzysz, na przykład tak:
java.util.UUID.randomUUID();.


Pozostało 580 znaków

2018-12-12 12:44
0

Dziękuję,

Wydaje mi się, żę źle określiłem co i do czego potrzebuje (być może nie rozumiem koncepcji UUID). Przepraszam.
Podczas instancjonowania z klasy Produkt, objekt otrzymuje produktID. Metoda find() klasy ProduktDB (która ma być obslugiwana przez ArrayList) ma pozwalać znaleźć i zwrócić Produkt za pomocą produktID - w przypadku 128bitowego UUID, może być ciężko.
Dowiedziałem się też że trudno jest przekonwertować UUID do Int.

Czy istnieje jakaś prosta metoda stworzenia losowej int unikalnej tylko w programie.
(To projekt pierwszego semestru, więc nie zależy mi na unikalności w skali światowej).

Pozostało 580 znaków

2018-12-12 13:13
0

@GeneratedValue(strategy=“IDENTITY”)

https://docs.jboss.org/hibern[...]rsistence/GeneratedValue.html

Pozostało 580 znaków

2018-12-12 13:21
0
bajzelboy napisał(a):

Podczas instancjonowania z klasy Produkt, objekt otrzymuje produktID. Metoda find() klasy ProduktDB (która ma być obslugiwana przez ArrayList) ma pozwalać znaleźć i zwrócić Produkt za pomocą produktID - w przypadku 128bitowego UUID, może być ciężko.

Dlaczego może być ciężko?

Dowiedziałem się też że trudno jest przekonwertować UUID do Int.

Dlaczego chciałbyś konwertować do int?

Czy istnieje jakaś prosta metoda stworzenia losowej int unikalnej tylko w programie.

Przyjmijmy więc, że wolisz int. Czy na pewno musi być losowy? Czy wystarczy unikalny? Może po prostu pole w ProduktDB (zakładam, że będziesz miał tylko jedną jej instancję) zwiększane np. o 1 przy każdym utworzeniu produktu. Oczywiście jeśli ProduktDB może być używany współbieżnie przez wiele wątków, to trzeba się odpowiednio zabezpieczyć.

Pozostało 580 znaków

2018-12-12 17:07
0

Nie rozumiem po co do jakiejś prostej aplikacji ma wciskać UUID, kiedy zwykły Integer lub Long w zupełności wystarczy.
@cayman25 już podpowiedział co powinieneś zrobić. Oznacz sobie jeszcze pole jako @Id Integer lub Long i będziesz miał inkrementowany ID w bazie.

edytowany 1x, ostatnio: OtoKamil, 2018-12-12 17:07

Pozostało 580 znaków

2018-12-12 17:44
0

OP napisał, że jego ProductDB to ArrayList produktów. Mieszacie człowiekowi w głowie tym @Id.

Pozostało 580 znaków

2018-12-12 19:11
0

Z tego co piszesz to miałeś dobry pomysł - statyczna zmienna typu int powinna załatwić sprawę (przy każdym tworzeniu produktu, jej wartość np inkrementowana)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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