Wpis z mikrobloga

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 jego ceny i klasę reprezentującą stawki podatku VAT potrzebną do wyliczania cen.

Do zrobienia na nabliższe tygodnie:
- ogarnąć zależności między klasami:
- najważniejszym obiektem jest obiekt DAO i wydaje mi się, że najsensowniej będzie zrobić nadrzędny obiekt, na poziomie którego obiekt DAO będzie wstrzykiwany przez konstruktor do obiektów wymagających dostępu do bazy (przede wszystkim obiektu reprezentującego magazyn sklepowy, w którym będą przechowywane przedmioty).
- ogarnąć metody pobierania/dodawania/usuwaniu/wyszkiwania danych w obiekcie DAO. Zależy mi na tym, żeby było jak najbardziej uniwersalne i żebym w razie potrzeby miał gotową klasę, która z powodzeniem da się użyć w innym projekcie opartym o Hibernate. Narazie w metodach pobierania/dodawania używam klasy Object, ale jest to niewygodne ze względu na konieczność późniejszego rzutowania. Rzecz do ogarnięcia: Generics (nie znam zgrabnego terminu polskiego). Narazie klasa jest zaśmiecona i wymaga uproszczenia i 'uogólnienia'.
- ogarnąć obiekt reprezentujący magazyn, jako nadrzędny dla przedmiotów.
- w dalszej kolejności zbudować GUI pozwalające na wyświetlanie zawartości magazynu, dodawanie, edytowanie, usuwanie przedmiotów (a więc Swing i AWT).

A! I przekonałem się do IntelliJ Idea na dobre. Wszedłem w posiadanie wersji Ultimate (legalnie i nieodpłatnie, licencja na 12 miesięcy), która wspiera Hibernate i dwie tony innych frameworków. No i ma ciemną wersję GUI.:-)

#programowanie #naukaprogramowania #java #kitkeprogramuje
  • 4
@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
Dzięki za podpowiedzi! Tekst o CRUD i kod w nim wygląda na dokładnie to, czego potrzebuję :-)

Zawsze mam wyrzuty sumienia, jak nie wypracuję czegoś samemu, tylko posiłkuję się gotowymi rozwiązaniami...
Dlaczego uważasz, że wstrzykiwanie przez konstruktor nie będzie dobrym rozwiązaniem? Pytanie wynika z ciekawości, nie z tego, że uważam to (jedyne) właściwe rozwiązanie. ;-)