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

Unikatowe ID zamowienia

Object Storage Arubacloud
0 głosów
628 wizyt
pytanie zadane 4 października 2017 w Java przez Paweł Nąckiewicz Nałogowiec (48,990 p.)

Witam,

tworze prosta aplikacje konsolowa w Javie.

Mam klase abstrakcyjna (Order) i chce aby ta klasa miala pola typu (name, price, status) oraz int ID.

Jak rozwiazac najlepiej problem aby to id kazdego zamowienia bylo zawsze unikatowe (inkrementowane najlepiej)?

3 odpowiedzi

0 głosów
odpowiedź 4 października 2017 przez mbabane Szeryf (79,280 p.)

Można wykorzystać do tego celu pole statyczne:

class Foo
{
   static int ID;
}

I za każdym stworzeniem danego obiektu zwiększać wartość o 1.

0 głosów
odpowiedź 4 października 2017 przez adas94 Nałogowiec (29,200 p.)

Tworzysz zmienną statyczną, a w konstruktorze przypisujesz inkrementowaną zmienną statyczną do pola id.

    private static int counter=0;
    private int id;


    public StaticObj() {
        this.id = ++counter;
    }

 

komentarz 4 października 2017 przez kosaa Stary wyjadacz (14,130 p.)
a co w momencie wielokrotnego uruchamiania aplikacji? zawsze bedzie liczyc od zera, ew bedzie trzeba dbac aby inicjalizowac zmienna statyczną

p.s.
w momencie gdy dojdzie baza danych to jest to niepotrzebny wzrost zlozonosci programu z drugiej strony wtedy o identyfikator bedzie martwil sie silnik
komentarz 4 października 2017 przez adas94 Nałogowiec (29,200 p.)
Kolega potrzebuje tego do aplikacji konsolowej, nic nie mówił o bazie danych, a więc to normalne, że po wyłączeniu aplikacji traci wszystkie dane.

Jeżeli będzie używał bazy danych, to tam już są gotowe rozwiązania do autoinkrementacji id.
komentarz 4 października 2017 przez kosaa Stary wyjadacz (14,130 p.)
wiem ze nie wspominal o bazie danych, ale lepiej juz od razu robic dobrze aby potem duzo nie trzeba bylo przerabiac :)
komentarz 4 października 2017 przez adas94 Nałogowiec (29,200 p.)
Jest to dość czyste rozwiązanie, które dobrze będzie działało na takim konsolowym programie, a jak dojdzie do tego baza danych to sobie zmieni 2 linijki i doda autoinkrementację.

Dla przykładu w Twojej propozycji przy przejściu na bazę danych będzie musiał wywalić całą funkcję i tak napisać autoinkrementację po ludzku. Więc na jedno wychodzi no ;d
komentarz 4 października 2017 przez kosaa Stary wyjadacz (14,130 p.)
wtedy w ogole wywalil by cala funkcje i zostawil wszystko silnikowi, nie trzeba by sie martwic o identyfikatory :)
komentarz 4 października 2017 przez adas94 Nałogowiec (29,200 p.)
Więc z tego wynika, że jakkolwiek by tego nie napisać, to przy przejściu na bazę trzeba będzie zmienić. Więc nie ma możliwości, żeby "od razu robić dobrze, aby potem dużo nie trzeba było przerabiać". ;) Więc IMHO podejście ze statyczną zmienną jest w tym przypadku odpowiednią praktyką.
–1 głos
odpowiedź 4 października 2017 przez kosaa Stary wyjadacz (14,130 p.)

timestamp z dokładnością do milisekund tadam

nie dostaniesz nigdy takich samych wartości, ew możesz zrobic prosta funkcyjke, dodam kod w js ale jest na tyle prosty ze powinienes zrozumiec

/*!
 * \brief Generate unique id.
 *
 * \return int
 */
function uniqid() {
    var uid = Date.now();

    // do nothing, only wait
    // secure for use two times in a row
    while ( uid === Date.now() ) {}

    return uid;
}

 

Podobne pytania

0 głosów
0 odpowiedzi 162 wizyt
pytanie zadane 25 lutego 2022 w Hostingi, domeny, usługi przez xPUSTYx Użytkownik (740 p.)
+1 głos
2 odpowiedzi 386 wizyt
0 głosów
1 odpowiedź 340 wizyt

92,536 zapytań

141,377 odpowiedzi

319,454 komentarzy

61,922 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...