Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

O technologiach dla języka Java okiem Mariusza Lipińskiego lipinski.pl 20 stycznia 2009 Coś między ORM a JDBC czyli Apache iBATIS Data.

Podobne prezentacje


Prezentacja na temat: "O technologiach dla języka Java okiem Mariusza Lipińskiego lipinski.pl 20 stycznia 2009 Coś między ORM a JDBC czyli Apache iBATIS Data."— Zapis prezentacji:

1 O technologiach dla języka Java okiem Mariusza Lipińskiego lipinski.pl 20 stycznia 2009 Coś między ORM a JDBC czyli Apache iBATIS Data Mapper

2 lipinski.pl Sondaż / Ręka w górę! Kto wie co to jest Apache iBATIS Data Mapper? Kto programował z użyciem iBATISa? Kto dobrze zna iBATISa? Kto wie co to jest Hibernate? Kto programował z użyciem Hibernatea?

3 lipinski.pl Agenda Co to jest Apache iBATIS Data Mapper Jak wygląda projekt używający iBATISa Poznajemy iBATISa na przykładach Narzędzia dla iBATISa i wtyczki do IDE Zagadnienia zaawansowane Apache iBATIS kontra ORM Rozważania, pytania i dyskusja

4 lipinski.pl Agenda Co to jest Apache iBATIS Data Mapper Jak wygląda projekt używający iBATISa Poznajemy iBATISa na przykładach Narzędzia dla iBATISa i wtyczki do IDE Zagadnienia zaawansowane Apache iBATIS kontra ORM Rozważania, pytania i dyskusja

5 lipinski.pl Co to jest Apache iBATIS Data Mapper Strona domowa projektu to Biblioteka na licencji Apache License 2.0 Implementacja dla Javy,.NETu i Rubyego Służy do implementacji trwałości danych Używa relacyjnych baz danych a więc SQLa Nie jest to rozwiązanie klasy ORM Zapytania SQL nie są generowane automatycznie Zapytania SQL zapisujemy w pliku XML iBATIS używa odwzorowania Obiekty SQL

6 lipinski.pl Agenda Co to jest Apache iBATIS Data Mapper Jak wygląda projekt używający iBATISa Poznajemy iBATISa na przykładach Narzędzia dla iBATISa i wtyczki do IDE Zagadnienia zaawansowane Apache iBATIS kontra ORM Rozważania, pytania i dyskusja

7 lipinski.pl Jak wygląda projekt używający iBATISa Plik konfiguracyjny (config.xml)

8 lipinski.pl Jak wygląda projekt używający iBATISa Plik mapowania (map.xml) SELECT ID as id, FIRST_NAME as firstName, FAMILY_NAME as lastName FROM PERSON WHERE ID = #value# INSERT INTO PERSON (ID, FIRST_NAME, FAMILY_NAME) VALUES (#id#, #firstName#, #lastName#) Klasa Person to JavaBean z atrybutami id, firstName oraz lastName

9 lipinski.pl Jak wygląda projekt używający iBATISa Konfiguracja poprzez plik.properties W pliku konfiguracyjnym (config.xml) możemy wczytać plik.properties Wartości z pliku.properties używamy poprzez składnię ${ }

10 lipinski.pl Jak wygląda projekt używający iBATISa Używanie iBATISa w Javie Z iBATISem komunikujemy się za pomocą instancji klasy SqlMapClient utworzonej na bazie konfiguracji z pliku XML Reader configReader = Resources.getResourceAsReader( "pl/mariuszlipinski/ibatis/config/config.xml"); SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(configReader);

11 lipinski.pl Jak wygląda projekt używający iBATISa Wywoływanie poleceń SQL Polecenia uruchamiamy wywołując metody klasy SqlMapClient, posługując się identyfikatorem zapytania public void saveUser(User newUser) throws SQLException { Integer userId = (Integer) sqlMapClient.insert("newUser", newUser); newUser.setId(userId); } (…)

12 lipinski.pl Agenda Co to jest Apache iBATIS Data Mapper Jak wygląda projekt używający iBATISa Poznajemy iBATISa na przykładach Narzędzia dla iBATISa i wtyczki do IDE Zagadnienia zaawansowane Apache iBATIS kontra ORM Rozważania, pytania i dyskusja

13 lipinski.pl Poznajemy iBATISa na przykładach Baza danych klientów Przykład na żywo!

14 lipinski.pl Poznajemy iBATISa na przykładach Definiowanie poleceń SQL Polecenia SQL definiujemy używając jednego z elementów: insert, update, delete, select, procedure lub statement // polecenie SQL

15 lipinski.pl Poznajemy iBATISa na przykładach Elementy parameterMap i resultMap Nie zawsze mapowanie między strukturą klas a zapytaniem SQL jest łatwe Zamiast określać parameterClass dla zapytania możemy określić parameterMap Zamiast określać resultClass możemy określić resultMap Rozbudowany przykład wraz z opisem na stronie mapowania-dla-apache.html

16 lipinski.pl Poznajemy iBATISa na przykładach Znaki zastrzeżone XML - CDATA Znaki specjalne z punktu widzenia XML, które chcemy umieścić w zapytaniu SQL umieszczamy w sekcji CDATA SELECT * FROM PERSON WHERE AGE ]]> #value#

17 lipinski.pl Poznajemy iBATISa na przykładach Zarządzanie transakcjami Zarządzanie transakcjami definiujemy w pliku konfiguracyjnym (config.xml) z użyciem elementu transactionManager Atrybut type definiuje typ zarządcy transakcji –JDBC (operacje commit() i rollback() JDBC API) –JTA –EXTERNAL (iBATIS nie obsługuje transakcji) Domyślnie iBATIS potwierdza transakcje tylko po operacjach insert, update i delete, ale można to zmienić z użyciem atrybutu commitRequired

18 lipinski.pl Poznajemy iBATISa na przykładach Definiowanie puli połączeń Pulę połączeń definiujemy w pliku konfiguracyjnym (config.xml) z użyciem elementu dataSource Atrybut type definiuje typ puli połączeń –SIMPLE (implementacja iBATISa) –DBCP (implementacja Jakarta DBCP) –JNDI (pula serwera aplikacyjnego)

19 lipinski.pl Poznajemy iBATISa na przykładach Wsparcie dla zapytań dynamicznych iBATIS umożliwia definiowanie zapytań z dynamiczną klauzulą WHERE Dynamizm jest ograniczony – dynamiczna nie może być klauzula FROM Zapiszmy zapytanie dla dynamicznego wyszukiwania obiektów klasy Person: public class Person { private String firstName; private String lastName; // nieistotne szczegóły pomijam }

20 lipinski.pl Poznajemy iBATISa na przykładach Przykład zapytania dynamicznego SELECT * FROM PERSON FIRSTNAME = #firstName# LASTNAME = #lastName#

21 lipinski.pl Poznajemy iBATISa na przykładach Warunki zapytania dynamicznego Dostępne są następujące warunki dla budowania dynamicznych zapytań : –isEqual, isNotEqual –isGreaterThan, isGreaterEqual, isLessThan, isLessEqual –isPropertyAvailable, isNotPropertyAvailable –isNull, isNotNull –isEmpty, isNotEmpty –isParameterPresent, isNotParameterPresent

22 lipinski.pl Agenda Co to jest Apache iBATIS Data Mapper Jak wygląda projekt używający iBATISa Poznajemy iBATISa na przykładach Narzędzia dla iBATISa i wtyczki do IDE Zagadnienia zaawansowane Apache iBATIS kontra ORM Rozważania, pytania i dyskusja

23 lipinski.pl Narzędzia dla iBATISa i wtyczki do IDE iBATIS DAO Szkielet do implementacji warstwy DAO dla iBATISa Początkowo nieodłączna część iBATISa Począwszy od iBATISa 2.3 oznaczony jako Deprecated Obecnie zaleca się używanie do tego celu Springa

24 lipinski.pl Narzędzia dla iBATISa i wtyczki do IDE Abator (iBATOR) Strona domowa to Abator to nazwa stara a iBATOR nowa Jest to narzędzie do generowania kodu dla iBATISa –generuje pliki Java i XML na podstawie bazy danych –generuje klasy domenowe dla tabel –generuje klasy dla zapytań przez przykład –generuje klasy DAO dla Springa na bazie SqlMapClientDaoSupport dla szkieletu iBATIS DAO niezależne od technologii w wariancie SI i CI –generuje pliki odwzorowań Obiekty SQL

25 lipinski.pl Narzędzia dla iBATISa i wtyczki do IDE Jak się używa Abatora Trzeba stworzyć plik konfiguracyjny Uruchomić można na kilka sposobów –Z linii poleceń (java -jar abator.jar -configfile abatorConfig.xml) –Jako zadanie poprzez Anta –Programistycznie, poprzez API Wczytując plik konfiguracyjny XML Tworząc obiekt konfiguracji poprzez API (nie trzeba pliku) –Poprzez wtyczkę do naszego IDE (Eclipse, IDEA?)

26 lipinski.pl Narzędzia dla iBATISa i wtyczki do IDE Abator jako wtyczka do Eclipsea Instalacja ze strony

27 lipinski.pl Narzędzia dla iBATISa i wtyczki do IDE Abator jako wtyczka do Eclipsea - Prezentacja Prezentacja Abatora na żywo!

28 lipinski.pl Narzędzia dla iBATISa i wtyczki do IDE Eclibatis – wtyczka dla Eclipsea Strona domowa to Wymagana Java 5 oraz Eclipse Ganymede (3.4) Instalacja ze strony Wtyczka na licencji Apache License 2.0 Zaimplementowana przez studentów z Furtwangen w ramach zajęć Podpowiadanie identyfikatorów z XML w plikach Java Podpowiadanie w plikach XML

29 lipinski.pl Narzędzia dla iBATISa i wtyczki do IDE Eclibatis – wtyczka dla Eclipsea - Prezentacja Prezentacja Eclibatisa na żywo!

30 lipinski.pl Narzędzia dla iBATISa i wtyczki do IDE Plugin dla IntelliJ IDEA Strona domowa to Integracja z Abatorem (iBATORem) Uzupełnianie kodu w plikach Java Uzupełnianie w plikach XML Wiele innych

31 lipinski.pl Agenda Co to jest Apache iBATIS Data Mapper Jak wygląda projekt używający iBATISa Poznajemy iBATISa na przykładach Narzędzia dla iBATISa i wtyczki do IDE Zagadnienia zaawansowane Apache iBATIS kontra ORM Rozważania, pytania i dyskusja

32 lipinski.pl Zagadnienia zaawansowane Pamięć podręczna dla wyników zapytania iBATIS umożliwia definiowanie nazwanych pamięci podręcznych Definiując zapytanie wskazujemy której pamięci podręcznej należy użyć dla zachowania jego wyników SELECT * FROM Product WHERE CATEGORY_ID = #value# iBATIS wspiera wiele modeli pamięci podręcznej: –Tylko do odczytu, dzielone przez wszystkie sesje –Sesyjne, do odczytu i zapisu –Dzielone, do odczytu i zapisu (zwracane są kopie obiektów)

33 lipinski.pl Zagadnienia zaawansowane Definiowanie pamięci podręcznej Przykład definicji pamięci podręcznej typu tylko do odczytu: Określamy typ (type) i model (readOnly oraz serialize) pamięci podręcznej oraz definujemy, kiedy pamięć ma być czyszczona (flushOnExecute oraz flushInterval)

34 lipinski.pl Zagadnienia zaawansowane Typy pamięci podręcznej Typ MEMORY –Pamięć jest zwalniana przez GC (akr. Garbage Collector) –Konfigurowany parametrem reference-type (typ referencji) o wartości jednej z: STRONG (obiekty nie mogą być usunięte przez GC) SOFT (obiekty mogą być usuwane przez GC) WEAK (typ domyślny, także usuwane przez GC) Typ LRU –Usuwane są obiekty najdawniej nie używane –Konfigurowany parametrem size określającym maksymalną liczbę (liczba naturalna) obiektów jaka może być przechowywana Typ FIFO –Jako pierwsze usuwane są obiekty które były jako pierwsze dodane –Konfigurowany parametrem size, analogicznie jak typ LRU

35 lipinski.pl Zagadnienia zaawansowane Typy pamięci podręcznej, c.d. Typ OSCACHE –Deleguje zadania do biblioteki OSCache 2.0 –Konfiguracja w pliku oscache.properties –Szczegóły na stronie

36 lipinski.pl Zagadnienia zaawansowane Własna fabryka obiektów Mapując wyniki zapytań (i nie tylko) iBATIS tworzy obiekty klas z użyciem fabryki Począwszy od wersji możemy definiować własne fabryki obiektów Fabryka to klasa która implementuje interfejs com.ibatis. sqlmap.engine.mapping.result.ResultObjectFactory Fabrykę rejestrujemy w pliku konfuguracyjnym (config.xml) Fabrykę konfigurujemy listą właściwości (opcjonalnie)

37 lipinski.pl Zagadnienia zaawansowane Mapowanie SQL do XML iBATIS umożliwia bezpośrednie generowanie fragmentów XML z zapytań SQL

Reklamy Google