Spring - dostęp do danych

Transkrypt

Spring - dostęp do danych
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
Spring - dostęp do danych
DAO - Data Access Object
Powszechnie używany wzorzec projektowy platformy J2EE. Jego
głównym zadaniem jest rozdzielenie zagadnień przechowywania
danych od logiki biznesowej i przepływów. Wymagamy, aby dostęp
do danych był niezależny od konkretnej platformy czy producenta.
Co wspiera?
W jakim celu?
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
Spring - dostęp do danych
DAO - Data Acess Object
Co wspiera?
Interfejs JDBC (Java DataBase Connectivity).
Narzędzia ORM (Object/Relational Mapping): Hibernate,
JDO, iBATIS SQL Maps.
W jakim celu?
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
Spring - dostęp do danych
DAO - Data Acess Object
Co wspiera?
W jakim celu?
Zarządzanie obiektami Conncection, ResultSet, Statement.
Ujednolicony wyjątek SQLException z różnymi kodami
błędów.
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
Spring DAO JDBC
Spring JDBC oferuje:
uporządkowaną i spójną hierarchię wyjątków
DataAccessException, które opakowują SQLException,
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
Spring DAO JDBC
Spring JDBC oferuje:
uporządkowaną i spójną hierarchię wyjątków
DataAccessException, które opakowują SQLException,
zamiana kodów błędów producenta bazy danych na hierarchię
Spring,
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
Spring DAO JDBC
Spring JDBC oferuje:
uporządkowaną i spójną hierarchię wyjątków
DataAccessException, które opakowują SQLException,
zamiana kodów błędów producenta bazy danych na hierarchię
Spring,
automatyzacją użycia bloków try/catch/finall,
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
Spring DAO JDBC
Spring JDBC oferuje:
uporządkowaną i spójną hierarchię wyjątków
DataAccessException, które opakowują SQLException,
zamiana kodów błędów producenta bazy danych na hierarchię
Spring,
automatyzacją użycia bloków try/catch/finall,
możliwość użycia Callback Methods (JdbcTemplate),
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
Spring DAO JDBC
Spring JDBC oferuje:
uporządkowaną i spójną hierarchię wyjątków
DataAccessException, które opakowują SQLException,
zamiana kodów błędów producenta bazy danych na hierarchię
Spring,
automatyzacją użycia bloków try/catch/finall,
możliwość użycia Callback Methods (JdbcTemplate),
gwarancja zamknięcia wszystkich połączeń,
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
Spring DAO JDBC
Spring JDBC oferuje:
uporządkowaną i spójną hierarchię wyjątków
DataAccessException, które opakowują SQLException,
zamiana kodów błędów producenta bazy danych na hierarchię
Spring,
automatyzacją użycia bloków try/catch/finall,
możliwość użycia Callback Methods (JdbcTemplate),
gwarancja zamknięcia wszystkich połączeń,
wsparcie dla procedur składowanych.
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
JDBC przykład
Podejście programistyczne
BasicDataSource ds = new BasicDataSource();
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
JDBC przykład
Podejście programistyczne
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(”org.hsqldb.jdbcDriver”);
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
JDBC przykład
Podejście programistyczne
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(”org.hsqldb.jdbcDriver”);
ds.setUrl(”jdbc:hsqldb:hsql://localhost”);
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
JDBC przykład
Podejście programistyczne
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(”org.hsqldb.jdbcDriver”);
ds.setUrl(”jdbc:hsqldb:hsql://localhost”);
ds.setUsername(”sa”);
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
JDBC przykład
Podejście programistyczne
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(”org.hsqldb.jdbcDriver”);
ds.setUrl(”jdbc:hsqldb:hsql://localhost”);
ds.setUsername(”sa”);
ds.setPassword(””);
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
JDBC przykład
Podejście programistyczne
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(”org.hsqldb.jdbcDriver”);
ds.setUrl(”jdbc:hsqldb:hsql://localhost”);
ds.setUsername(”sa”);
ds.setPassword(””);
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
JDBC przykład
Kontekst aplikacji
ApplicationContext ac =
new ClassPathXmlApplicationContext(”ticket-context.xml”);
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
JDBC przykład
Kontekst aplikacji
ApplicationContext ac =
new ClassPathXmlApplicationContext(”ticket-context.xml”);
DataSource ds =
(DataSource) ac.getBean(”dataSource”, DataSource.class);
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
JDBC przykład
Kontekst aplikacji
ApplicationContext ac =
new ClassPathXmlApplicationContext(”ticket-context.xml”);
DataSource ds =
(DataSource) ac.getBean(”dataSource”, DataSource.class);
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Ogólnie
Co oferuje
Przykład połączenia
Przykłady
JDBC przykład
Przykładowe programy w NetBeans
JDBC proste przykłady
Utworzenie nowego projektu w NetBeans.
Dodanie nowego dostawcy bazy danych.
Utworzenie połączenia z bazą.
Przykładowa aplikacja.
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Definicja
Dostępne implementacje ORM
ORM Co to jest?
Object/Relational Mapping
Jest to kolejny poziom abstrakcji, znajdujący się powyżej JDBC.
Panaceum na ’bałagan’ występujący na styku programowania
obiektowego i relacyjnych baz danych.
W uproszczeniu jest to odwzorowanie wyników zapytań JDBC na
obiekty języka JAVA.
Główne problemy
Wydajność - odwzorowania bazy danych w obiekty stanowi
duże obciążenie dla systemu.
Nauki specyficznych rozwiązań, np. HQL dla Hibernate.
Zachowanie spójności między bazą danych, plikami
mapującymi oraz kodem źródłowym.
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Definicja
Dostępne implementacje ORM
Mapowania współpracujące ze Spring-iem
iBATIS SQL Maps
Hibernate
JDO
Apache OJB
TopLink
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Definicja
Dostępne implementacje ORM
Mapowania współpracujące ze Spring-iem
iBATIS SQL Maps
Proste ale potężne rozwiązanie dla przejścia SQL ⇒ XML,
wliczając mapowanie wyników i parametrów do JavaBeans.
Najlepiej sprawdza się przy danych przeznaczonych do odczytu.
Hibernate
JDO
Apache OJB
TopLink
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Definicja
Dostępne implementacje ORM
Mapowania współpracujące ze Spring-iem
iBATIS SQL Maps
Hibernate
Jedno z najbardziej popularnych narzędzi do mapowania. Wspiera
własny język zapytań HQL oraz specjalny mechanizm zwalniania
blokowanych danych. Posiada mechanizmy buforowania dla
zwiększenia wydajności oraz wprowadza specjalne mechanizmy
detekcji zmian.
JDO
Apache OJB
TopLink
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Definicja
Dostępne implementacje ORM
Mapowania współpracujące ze Spring-iem
iBATIS SQL Maps
Hibernate
JDO - Java Data Object
Firmowane znakiem Apache środowisko ORM opierające się w
większości na standardowej reprezentacji danych z bazy danych w
postaci POJO (Plain Old Java Objects). Istotą JDO jest
rozdzielenie operacji na danych (przez metody obiektów) od tych
wykonywanych na bazie danych (wywołania metod JDO).
Apache OJB
TopLink
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Definicja
Dostępne implementacje ORM
Mapowania współpracujące ze Spring-iem
iBATIS SQL Maps
Hibernate
JDO
Apache OJB - ObJectRelationalBridge
Rozwiązanie ORM pod znakiem Apache. Zaprojektowane dla
szerokiej gamy aplikacji (od embedded do wielowarstwowych
aplikacji J2EE). Mapowany za pomocą plików XML. Pozwala na
dynamiczną zmianę odwzorowań, w trakcie wykonywania aplikacji,
poprzez Meta-Object-Protocol.
TopLink
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework
DAO
ORM
Definicja
Dostępne implementacje ORM
Mapowania współpracujące ze Spring-iem
iBATIS SQL Maps
Hibernate
JDO
Apache OJB
Oracle TopLink
Bardzo dojrzałe i silnie wspierane przez firmę Oracle środowisko
ORM. Oferuje bardzo elastyczne mapowania, których zmian
dokonuje się przez Workbench GUI. Posiada mechanizmy detekcji
zmian na zarejestrowanych obiektach. Wspiera: Query by
Example, EJB QL, Procedury składowane.
Tomasz Łuczak, Jarosław Krzysztofik, Marcin Kulawinek
Spring Framework