Professional Documents
Culture Documents
Tworzenie aplikacji
sieciowych za pomoc
Springa, Hibernate i Eclipse
Autor: Anil Hemrajani
Tumaczenie: Konrad Rymczak,
Grzegorz Skorczyski, Ewa Bucka
ISBN: 978-83-246-0682-5
Tytu oryginau: Agile Java Development
with Spring, Hibernate and Eclipse
Format: B5, stron: 352
Tworzenie zaawansowanych projektw korporacyjnych w Javie
Poznaj sprawdzone metodologie i procesy
Naucz si stosowa praktyczne technologie i narzdzia
Twrz w Javie kompletne rozwizania w optymalny sposb
Chciaby tworzy rozbudowane aplikacje w jzyku Java szybciej i w prostszy sposb?
Liczne narzdzia i technologie budowania programw w Javie czsto uatwiaj wykonywanie
niektrych zada, ale jednoczenie niepotrzebnie komplikuj i wyduaj proces
powstawania gotowych produktw. Jak dobra odpowiednie techniki i zastosowa
metodologi, ktra usprawni i przyspieszy prac? Niektrzy ju to wiedz Ty te
moesz skorzysta z ich dowiadcze!
Java. Tworzenie aplikacji sieciowych za pomoc Spring, Hibernate i Eclipse to
praktyczny poradnik opisujcy wydajn i sprawdzon metodologi szybkiego pisania
oprogramowania w jzyku Java. Dziki tej ksice poznasz techniki programowania
ekstremalnego oraz metodologii Agile i nauczysz si stosowa je podczas pracy nad
programami. Dowiesz si, jak zaprojektowa aplikacj, przygotowa rodowisko
i korzysta z wiersza polece oraz proponowanego zestawu narzdzi platformy Spring,
mechanizmu odwzorowa Hibernate i IDE Eclipse co pozwoli Ci w prosty sposb uy
zaawansowanych rozwiza.
Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Spis treci
Przedmowa .................................................................................... 13
O autorze ....................................................................................... 17
Podzikowania ............................................................................... 19
Wstp ............................................................................................ 23
Cz I
Wprowadzenie .............................................................. 31
Cz II
Spis treci
7
Odwzorowanie ........................................................................................................ 103
Obiekty w pamici kontra obiekty trwae ............................................................... 104
Projekt naszej przykadowej bazy danych ..................................................................... 104
Denormalizacja ........................................................................................................ 104
Konwencje nazewnicze ........................................................................................... 105
Uwagi do projektowania bazy danych .................................................................... 106
Skrypt DDL ............................................................................................................. 106
Gdzie w naszej aplikacji znajduje si HSQLDB i Hibernate? ...................................... 107
HSQLDB ....................................................................................................................... 108
Serwer HSQLDB i przydatne zadania Anta ............................................................ 108
HSQLDB Database Manager i SqlTool .................................................................. 109
Tryby persistent i in-memory w HSQLDB ............................................................. 109
Doczamy HSQLDB do archiwum naszej aplikacji .............................................. 110
Pracujemy z Hibernate ................................................................................................... 110
Nie potrzeba DAO ani DTO .................................................................................... 111
Obsugiwane bazy danych ....................................................................................... 111
Hibernate i EJB 3.x ................................................................................................. 111
Przykadowy test konfiguracji Hibernate ................................................................ 112
Instalacja Hibernate ................................................................................................. 115
Podstawy pracy z Hibernate .................................................................................... 117
Tworzymy TimesheetManager.java, korzystajc z Hibernate ................................ 120
Employee.* i DepartmentManager.java .................................................................. 124
Pliki wymagane w ciece klas ............................................................................... 124
Uruchamiamy zestaw testw przy pomocy Anta .................................................... 124
Usuwamy rekordy ................................................................................................... 125
Interfejs Criteria ...................................................................................................... 125
Obsuga wyjtkw ................................................................................................... 126
Pozostae funkcje Hibernate .......................................................................................... 127
Asocjacje ................................................................................................................. 127
Blokowanie obiektw (kontrola wspbienoci) ................................................... 127
Jeszcze wicej Hibernate ......................................................................................... 129
Podsumowanie ............................................................................................................... 129
Rekomendowane rda ................................................................................................ 130
Spis treci
9
Plugin Spring IDE ................................................................................................... 215
Inne godne uwagi pluginy WTP .............................................................................. 217
Wicej Eclipse? Tak, jest peno pluginw ..................................................................... 217
Projekty Eclipse.org ................................................................................................ 217
Katalogi pluginw ................................................................................................... 218
MyEclipseIDE.com ................................................................................................. 218
Google.com ............................................................................................................. 219
Wsparcie dla pracy zespoowej w Eclipse ..................................................................... 219
System pomocy w Eclipse ............................................................................................. 220
Wskazwki i porady ...................................................................................................... 220
Skrty klawiaturowe ............................................................................................... 221
Preferencje ............................................................................................................... 224
Zakadki ................................................................................................................... 225
Uruchamianie zewntrznych narzdzi i przegldarki WWW ................................. 225
Historia lokalna ....................................................................................................... 226
Resetowanie perspektywy ....................................................................................... 226
Kopiowanie elementw ........................................................................................... 226
Czyszczenie projektw ............................................................................................ 226
Konwersja znakw koca linii ................................................................................ 227
Parametry startowe Eclipse/JVM ............................................................................ 227
Przegldanie obcego kodu ....................................................................................... 227
Ukryte pliki Eclipse ................................................................................................. 227
Deinstalowanie Eclipse .................................................................................................. 227
Subiektywne porwnanie do IntelliJ i NetBeans ........................................................... 228
IntelliJ 5.0 ................................................................................................................ 228
NetBeans 5.0 ........................................................................................................... 229
Porwnanie czasw uruchomienia .......................................................................... 230
Podsumowanie ............................................................................................................... 231
Rekomendowane rda ................................................................................................ 232
10
Spis treci
11
AJAX Asynchroniczny JavaScript i XML ............................................................... 290
Javadoc i komentarze ..................................................................................................... 290
Cay system w jednym pliku WAR ............................................................................... 291
Podsumowanie ............................................................................................................... 291
Rekomendowane rda ................................................................................................ 292
12
Dodatek F
Dodatek I
67
Rozdzia 3.
68
W tym rozdziale chc pokaza od pocztku do koca metodologi AMDD (Agile Model
Driven Development; agilemodeling.com) i metody programowania ekstremalnego
(XP; extremeprogramming.org).
69
To, co zobaczysz w tym rozdziale, da Ci przynajmniej pewien punkt widzenia. Ten proces moe (lub te nie) zadziaa w Twoim przypadku. Jednake musz by jakie pozytywne aspekty uycia tych metodologii, poniewa deweloperzy uwielbiaj je i widziaem
wiele pomylnie ukoczonych projektw, ktre byy wynikiem ich uycia. Ponadto
w naszym przypadku artefakty przedstawione w tym rozdziale s istotne dla reszty tej
ksiki i omwiony proces moe nam tutaj pomc.
Jak wida na rysunku 3.1, mamy do stworzenia w tym rozdziale kilka artefaktw, wic
zacznijmy prac. Jednake zanim zaczniemy, chciabym dostarczy dwch punktw
widzenia uytkownikw XP.
70
Szef projektu pracujcy w firmie Fortune 50 powiedzia mi ostatnio: Kiedy zaczynamy iteracj, to pierwszy jej dzie zwykle spdzamy na przegldaniu historii i dzieleniu ich na zadania. wiczenie polegajce na dzieleniu zada jest tak naprawd sesj
projektow. Na koniec wida, e okoo 20% czasu kadej iteracji deweloperzy powicaj na projektowanie. Jeli dodasz czas wykorzystywany przez wszystkich deweloperw w czasie wszystkich iteracji, to otrzymasz du liczb, ktra obala stwierdzenie
bez projektu.
Aby da Ci rwnie inny punkt widzenia na metodologi XP, przedstawi rozwaania
starszego architekta, ktry od duszego czasu pracuje w brany IT i ukoczy wiele
projektw przy pomocy metodologii XP i AMDD: Jest rwnie inny poziom projektowania XP dzienny. Refaktoryzacja jest czci projektowania. Chocia pocztkowy
projekt iteracji jest wanym krokiem, to projektowanie po napisaniu kodu tworzy rnice
pomidzy projektem dobrym a naprawd eleganckim.
Rnice tkwice w podejciu do XP dotycz architektury i projektowania w caym procesie wytwarzania, a nie tylko na pocztku projektu. Inaczej mwic, aplikacja cigle
ewoluuje w cigu rnych iteracji. Korzyci pync z takiego podejcia jest to, e projektowanie dotyczy tego, co aktualnie tworzysz, a nie pochania od trzech do szeciu
miesicy przed kodowaniem, w sytuacji gdy wymagania mog ewoluowa w dzisiejszym
cigle zmieniajcym si wiecie.
Diagram architektury
Rysunek 3.2 przedstawia diagram opisujcy architektur naszej przykadowej aplikacji.
Zauwa, e zosta zmieniony na form elektroniczn z wersji tablicowej, jak widziae
w poprzednim rozdziale. Konwersja na form elektroniczn jest kwesti gustu; mgby
zrobi zdjcie aparatem cyfrowym diagramu znajdujcego si na tablicy, ale osobicie
wol jasne i czytelne diagramy.
Architektura jest dosy prosta. Mamy trzy standardowe warstwy architektury sieciowej
z warstw klienta (przegldarka WWW), warstw rodkow (serwer aplikacji) i nasz
warstw danych (baza danych).
71
Analizujemy klasy
przy pomocy kart CRC
Rysunek 3.3 pokazuje model domenowy wykonany w rozdziale 2. Model domenowy
umoliwia nam analiz obiektw biznesowych lub domenowych. Historie uytkownika
umoliwi nam analiz klas kontrolerw internetowego interfejsu uytkownika. Tak wic
przyjrzyjmy si obiektom, ktre chcemy wykorzysta do implementacji historii Lista
arkuszy, abymy mogli si dokadnie przyjrze, jak dziaaj karty CRC.
72
Rysunek 3.4 pokazuje prototyp UI Lista kart pracy z rozdziau 2. Jak wspomniaem
wczeniej, wiemy, e interfejs uytkownika bdzie si opiera na przegldarce WWW
i e bdziemy korzysta z wzorca MVC. Tak wic przyjrzyjmy si naszym klasom
z punktu widzenia wzorca projektowego MVC.
Rysunek 3.4.
Ekran
Lista kart pracy"
73
74
Tabela 3.5. Przykadowa mapa przepywu aplikacji
Nazwa
historii
Widok
Klasa kontrolera
Wsppracownicy
Zalene
tabele
Lista kart
pracy
timesheetlist
TimeSheetListController
TimesheetManager
Timesheet
Wprowad
godziny
enterhours
EnterHoursController
TimesheetManager
Timesheet
Department
Technika uzupeniajca
Porwnujc t map przepywu aplikacji do diagramw klas lub kart CRC, zauwaysz,
e uzupenia ona karty CRC i diagramy klas. Lista kart CRC, ktra zawiera midzy
innymi zakres odpowiedzialnoci klas, uzupenia braki mapy przepywu aplikacji. Z drugiej strony diagramy klas pokazuj zwizki, zachowania (metody), atrybuty i prawdopodobnie jeszcze wicej ni zawiera taka mapa.
Przy poczeniu wszystkiego razem w postaci tabeli, moemy atwo znale nazwy klas
(nawet przy duych projektach) i atwo je sortowa przy pomocy arkusza kalkulacyjnego
lub innych narzdzi.
75
Rysunek 3.5.
Przykadowy
diagram klas
dla Time Expression
76
Ponadto proste narzdzia, takie jak OpenOffice.org, Microsoft PowerPoint, Microsoft Visio,
umoliwiaj czenie rnych figur (na przykad prostoktw) za pomoc cznikw, ktre s
zachowywane nawet w przypadku zmiany pooenia ktrego obiektu. S to potne narzdzia,
poniewa pozwalaj w prosty sposb tworzy diagramy przepywu. Czsto korzystam z cznikw, jak wida na diagramach umieszczanych w tej ksice; w rzeczywistoci prawie wszystkie
diagramy zrobiem, korzystajc z OpenOffice.org!
Ponadto czsto stosuj praktyki rekomendowane przez metodologi Agile, na przykad modelowanie w celu osignicia okrelonego efektu lub tworzenie wystarczajco dobrych artefaktw.
Idc dalej, uaktualniam je tylko wtedy, gdy jest to niezbdne, poniewa wiele artefaktw mona
wyrzuci, gdy speni swoje zadanie. Po zaimplementowaniu zaprojektowanego kodu posiadasz ju gotow dokumentacj tak, sam kod. (Jak wspominaem wczeniej, na podstawie
kodu jestemy w stanie stworzy nieze diagramy klas i inne).
Gwnym powodem tego, e cika dokumentacja wydaje si czystym obdem, jest to, i nie
jestem w stanie sobie przypomnie projektu, ktry utrzyma do samego koca kompletn dokumentacj. Dzieje si tak, poniewa w szybko zmieniajcym si wiecie, w ktrym zdarzaj si
nierealistyczne terminy ukoczenia projektw, bardzo trudno jest utrzyma aktualn dokumentacj.
Podsumowujc, uywaj diagramw UML tam, gdzie s odpowiednie, ale nie wstyd si i nie
wahaj uy prostszych, lecz efektywniejszych wasnych diagramw. Na koniec chciaem zacytowa jedno z hase reklamowych ze strony agilemodeling.com: Twoim celem jest budowanie
oglnego zrozumienia, a nie tworzenie szczegowej dokumentacji.
77
Wybraem bardzo proste nazwy dla pakietw Javy, aby pasoway do wzorca bazujcego na MVC. Moglimy nazwa pakiet zawierajcy model na przykad czym w stylu
domeny, ale preferuj prostot i jednoznaczno; staram si dopasowa nazwy
pakietw do nazw przyjtych w architekturze lub mapie przepywu aplikacji. W ten
sposb kady nowy czowiek, ktry zajmie si moim kodem, od razu zrozumie jego
organizacj. Tak wic w peni kwalifikowana nazwa naszego pakietu zawierajcego
model bdzie miaa posta com.visualpatterns.timex.model.
Jak moesz si domyla, pakiet kontrolera posiada w sobie klasy zwizane z kontrolerem. Pakiet job zawiera nasze zadania zaplanowane, odpowiedzialne za wysanie przypomnienia. Pakiet util zawiera klasy z kodem pomocniczym.
Ostatnim, ale nie mniej wanym pakietem, jest test, ktry bdzie zawiera kod testw
jednostkowych. Chocia ja wolaem umieci testy w osobnym pakiecie, to wielu deweloperw decyduje si umieszcza kod testowy w tych samych katalogach co testowana
klasa. Jest to kwestia gustu, ale moim zdaniem oddzielenie pakietu (katalogu) z klasami
testowymi pozwala utrzyma jasn i przejrzyst struktur pozostaych pakietw.
Struktura katalogw
Rysunek 3.7 pokazuje struktur katalogw, jakiej uyjemy w naszej przykadowej aplikacji. Powinno to wyglda dosy prosto i znajomo; najwaniejsze podkatalogi to src,
build, lib i dist. Bd si odwoywa do tego rysunku w dalszych rozdziaach (na przykad w rozdziaach 4., 5. i 7.), a podane w tym rozdziale katalogi bd szerzej omwione,
kiedy przyjdzie taka potrzeba. Tymczasem rysunek 3.7 dostarcza krtkiego opisu kluczowych katalogw.
78
Rysunek 3.7.
Struktura katalogw
dla Time Expression
Wytwarzanie oprogramowania
od pocztku do koca
Podsumowujc wszystko, czego si do tej pory nauczylimy w tym rozdziale, moemy
zapisa kolejne kroki wymagane do zaimplementowania (utworzenia) naszej pierwszej
historii, od interfejsu uytkownika do bazy danych. Poniej zamieszczam zadania wymagane do ukoczenia pierwszej historii uytkownika:
t Skonfiguruj rodowisko pracy, wczajc w to JDK, Ant i JUnit (w rozdziale 4.).
t Napisz testy i implementacj klas znajdujcych si w pakiecie model
Testy akceptacyjne
Testy akceptacyjne mog dostarczy nam wielu szczegowych wymaga, tak jak to
dzieje si w wielu projektach opartych na metodologii Agile. Jednym z przykadw
jest lista prawidowych operacji, jakie moe wykona uytkownik na danym ekranie.
79
Pomys, aby korzysta z testw akceptacyjnych jako specyfikacji wymaga, jest sensowny,
poniewa te testy okrelaj to, czego oczekuje klient od naszej aplikacji. W naszym przypadku uyjemy ich tylko do testw jednostkowych, aby ustali szczegowe wymagania.
Jednake jest wiele wicej zastosowa testw akceptacyjnych w prawdziwym wiecie.
Poniszy podrozdzia jest list naszych testw akceptacyjnych i elementw historii, ktre
bdziemy implementowa.
Logowanie
t Identyfikator pracownika moe mie dugo do 6 znakw. Haso musi si
zawiera w 8 10 znakach.
t Tylko uytkownicy o prawidowych identyfikatorach mog si logowa.
Wprowad godziny
t Godziny musz by wprowadzane w formacie numerycznym.
t Dzienna liczba godzin nie moe przekracza 16. Tygodniowa liczba godzin
po przecinku.
t Pracownik moe oglda i edytowa tylko wasne karty pracy.
Inne rozwaania
Jak wspomniaem wczeniej, potrzebujemy opracowa minimalny projekt i architektur,
aby mona byo zacz. Chocia stworzylimy rozsdnej wielkoci architektur i projekt,
w tym rozdziale zostao wiele nieomwionych elementw:
t Bezpieczestwo aplikacji omwi ten problem w rozdziale 7., Framework
80
Podsumowanie
W tym rozdziale zrealizowalimy zaoenia architektury i projektu przyjte dla naszej
przykadowej aplikacji Time Expression:
t Opracowalimy diagram architektury.
t Zbadalimy obiekty, korzystajc z kart CRC.
t Wykonalimy map witryny (map przepywu aplikacji).
t Opracowalimy diagramy klas i pakietw dla Time Expression.
81
rozdziaach.
t Przejrzelimy list zaawansowanych poj, ktre bdziemy musieli rozway,
Rysunek 3.8. Koncepcja, model fizyczny i implementacja artefaktw dla Time Expression
82
Rekomendowane rda
Ponisze strony dostarczaj dodatkowych informacji na tematy omwione w tym rozdziale:
t Agile Model Driven Development: http://www.agilemodeling.com
t Agile Data: http://www.agiledata.org
t Programowanie ekstremalne: http://extremeprogramming.org
t Karty CRC: http://c2.com/doc/oopsla89/paper.html