Mirki, trochę się ogarnąłem z #java i stwierdziłem, że projekt, który rozgrzebałem jest ponad moje siły, jak na pierwszy projekt początkującego - prosty menadżer magazynu sklepowego okazał się być wcale nie tak prosty. Postanowiłem zrobić zatem inną, mniej skomplikowaną apkę.
Docelowo TimeKeeper, bo tak się nazywa, ma być zegarem/timerem do śledzenia czasu poświęconego na pracę nad danym zadaniem (inspiracją był blogowy wpis @JavaDevMatt). Jeśli chodzi o rozwiązania projektowe: dane przechowywane są
k.....e - Mirki, trochę się ogarnąłem z #java i stwierdziłem, że projekt, który rozgr...

źródło: comment_vqhD1LY0shp2YTcXGuCrfmDCwZhJGies.jpg

Pobierz
@kitke: jeśli można się przyczepić to na pewno do e.printStackTrace() przy wyjątkach np. operacji plikowych. Powinien pokazać się jakiś komunikat o błędzie dla użytkownika...
  • Odpowiedz
Mirki, małe podsumowanie postępów, wolniejszych zresztą niż przewidywałem (robota i grypa swoje musiały zająć...). Od momentu coming-out'u coming-out'u, wydaje mi się, że udało mi się projekt posunąć we właściwym kierunku. Ogarnąłem podstawowe funkcjonalności Hibernate na tyle, że napisałem proste DAO pozwalające na zapis i wczytywanie danych do bazy (na początku planowałem SQLite, ale ze względu na brak pełnego wsparcia Hibernate, przesiadłem się na HSQLDB), ogarnąłem też podstawowe klasy opisujące przedmiot i
@kitke: Siemka,

z tym DAO to entityManager jest sam w sobie implementacją DAO. To czego szukasz to Service

jeśli chodzi o uniwersalność to nie robimy na Object. Możesz zrobić generyczne (generic) service realizujące takie rzeczy:
http://www.adam-bien.com/roller/abien/entry/generic_crud_service_aka_dao

w nowszej Javie będzie Ci krzyczeć o typach ale to naprawiasz dodając typ w <>:

public T create(T t);

jeżeli chodzi o wstrzykiwanie, to nie rób tego przez konstruktor, tylko zerknij na Inversion of Control
  • Odpowiedz
OK, zgodnie z obietnicą, cotygodniowa aktualizacja.
Zapiernicz w pracy i bobo w domu mocno ograniczyły mi czas w tym tygodniu, więc prace posuwają się w tempie ślimaka wyścigowego. Co zatem się udało. Zgodnie z sugestą @mamapoth zrezygnowałem z używania zmiennych zmiennoprzecinkowych do przechowywania informacji o kasie. Popatrzyłem za info w sieci (thank you Stackoverflow!) i najłatwiej - chociaż z punktu widzenia wydajności programu, niezbyt optymalnie - będzie sprawę ogarnąć używając BigDecimal -
1. robisz centralnie miejsce konfigurowania obiektów i ustalasz, że prosząc o „db” zawsze dostaniesz jeden i ten sam obiekt.
2. wstrzykujesz ten obiekt innym obiektom, które go potrzebują (najlepiej w konstruktorze)

Na cholerę komuś Singletony i wszechobecne statyczne getInstance()? Mamy 21. wiek i fw z DIC!
  • Odpowiedz
Czytam, za radą @CamelCase, książkę R. C. Martin'a, Czysty Kod. Podręcznik dobrego programisty. Zanim kupiłem wydanie polskie zacząłem czytać ją po angielsku (Clean code. A Handbook of Agile Software Craftsmanship). I o ile wersję angielską czyta się z dużą przyjemnością o tyle polski przekład mnie męczy. Odnoszę wrażenie, że równie mocno męczył się tłumacz przekładając bądź co bądź techniczny żargon, którym Martin bez przerwy operuje. Oprócz doznań natury, powiedzmy, estetycznej mam