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

Unikatowe ID zamowienia

0 głosów
113 wizyt
pytanie zadane 4 października 2017 w Java przez pawi125 Gaduła (3,370 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 Maniak (67,320 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,160 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,050 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,160 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,050 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,160 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,050 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,160 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,050 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
1 odpowiedź 44 wizyt
0 głosów
0 odpowiedzi 21 wizyt
pytanie zadane 18 marca w PHP, Symfony, Zend przez podgorowicz Początkujący (340 p.)
0 głosów
2 odpowiedzi 74 wizyt
Porady nie od parady
Forum posiada swój własny chat IRC, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

63,406 zapytań

109,671 odpowiedzi

229,146 komentarzy

44,693 pasjonatów

Przeglądających: 288
Pasjonatów: 18 Gości: 270

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...