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