seminarium tbe
Transkrypt
seminarium tbe
TBE -=- Technologie biznesu elektronicznego -=- Technologie warstwy danych Marek Puchalski TBE Technologie warstwy danych:: Spis treści: • • • • • • • Java I/O JDBC JDO Hibernate In-memory db XML XML db 2 TBE Technologie warstwy danych:: Czym jest warstwa danych? 3 TBE Technologie warstwy danych:: Java I/O Abstrakcja strumienia • Abstrahują od fizycznej struktury • W Javie są silnym i rozbudowanym mechanizmem 4 TBE Technologie warstwy danych:: Java I/O 5 TBE Technologie warstwy danych:: Java I/O Client Idea dekoratora 1 +operation() ConcreteComponent +operation() • • • • Component Gdy wiele klas Zachowuje wspólny interfejs Utrudnia kodowanie Przykład: DecoratorA +operation() +modify() Decorator +operation() 0..1 DecoratorB +operation() +add() BufferedReader in = new BufferedReader( new FileReader("IOStreamDemo.java")); 6 TBE Technologie warstwy danych:: Java I/O Serializacja obiektów (1) • Na dysk, po sieci • Lightweight persistance Co potrzebne? • Interfejs Serializable • Strumień ObjectOutputStream 7 TBE Technologie warstwy danych:: Java I/O Serializacja obiektów (2) • Większa kontrola: class Blip3 implements Externalizable { public void writeExternal(ObjectOutput out) throws IOException { out.writeObject(s); out.writeInt(i); } public void readExternal(ObjectInput in) (...) } 8 TBE Technologie warstwy danych:: JDBC Czym jest? • Serializacja, JDBC (ODBC) • Zalety: – Szybki – Prosty w użyciu • Wady – Wiąże aplikację z bazą – ... 9 TBE Technologie warstwy danych:: JDBC Drobny przykład? ResultSet r = s.executeQuery( „SELECT first, last, email FROM ala”); while(r.next()) { System.out.println( r.getString("Last") + ", " + r.getString("fIRST") + ": " + r.getString("EMAIL") ); } 10 TBE Technologie warstwy danych:: JDO Java Data Objects • • • • • Serializacja, JDBC, JDO... 1999-2002 Bazy obiektowe, bazy relacyjne Podstawowa idea Skąd zdobyć? 11 TBE Technologie warstwy danych:: JDO Trwałość obiektów • JDO Enhancer • PersistenceCapable – FCO – First Class Objects (JDO identity) – SCO – Second Class Objects • Stany obiektów zdolnych do trwałości: ulotny (transient), brudny (dirty), transakcyjny (transactional), nowy (new), skasowany (deleted) 12 TBE Technologie warstwy danych:: JDO Metadane <jdo> Package <package com.xyz.hr; name="com.xyz.hr"> class Employee <class { name="Employee" identityString name; type="application" Float salary; objectid-class= Department "EmployeeKey"> dept; <field name="name" Employee boss; primary-key="true"> } (...) 13 TBE Technologie warstwy danych:: JDO JDOQL Query query = pm.newQuery(Person.class, people, "name == \"Doug Barry\""); Collection result = (Collection) query.execute(); Iterator iter = result.iterator(); while ( iter.hasNext() ) { Person person = (Person) iter.next(); person.address.street = "13504 4th Avenue South"; } 14 TBE Technologie warstwy danych:: Hibernate Idea ORM • Na obiektowość jest... za późno • Warstwa pośrednia, rozwiązanie każdego problemu informatyki 15 TBE Technologie warstwy danych:: Hibernate Poziomy ORM • • • • Pure relational Light object mapping Medium object mapping Full object mapping 16 TBE Technologie warstwy danych:: Hibernate Bilans zysków i strat • Wady: – Można inaczej – Można szybciej • Zalety – Izolacja od dialektu -> przenośność kodu – Wyższy poziom abstrakcji -> mniej pisania 17 TBE Technologie warstwy danych:: Hibernate Celem przygotowania... • Metadane • Klasy trwałe Przykłady (1) Session session = getSessionFactory().openSession(); Transaction tx = session.beginTransaction(); Message message = new Message("Hello World"); session.save(message); tx.commit(); session.close(); 18 TBE Technologie warstwy danych:: Hibernate Przykłady (2) List messages = newSession.find( "from Message as m order by m.text asc"); System.out.println( messages.size() + " message(s) found:" ); for ( Iterator iter = messages.iterator(); iter.hasNext(); ) { Message message = (Message) iter.next(); System.out.println( message.getText() ); } 19 TBE Technologie warstwy danych:: In-memory databases BD w pamięci • In-memory, a table based • Chwila refleksji... 20 TBE Technologie warstwy danych:: In-memory databases Stosowane rozwiązania 21 TBE Technologie warstwy danych:: XML Extensible Markup Language <?xml version="1.0" encoding="ISO-8859-1"?> <note> <first>Markup – tags everywhere</first> <second>Extensible – your own tags</second> <third>Self-descriptive – with DTD or XML Schema</third> </note> 22 TBE Technologie warstwy danych:: XML Rodzaje parserów • Istota parsera • Parsery: – DOM (Document Object Model) – SAX (Simple API for XML) • Parsery: – Walidujące – Niewalidujące 23 TBE Technologie warstwy danych:: XML DOM int type = node.getNodeType(); switch (type) { case Node.DOCUMENT_NODE: (...) case Node.ELEMENT_NODE: { System.out.print(node.getNodeName()); NamedNodeMap attrs = node.getAttributes(); (...) break; } (...) 24 TBE Technologie warstwy danych:: XML SAX public class saxOne extends HandlerBase { public void startDocument() (...) public void startElement(String name, AttributeList attrs) (...) public void characters(char ch[], int start, int length) (...) public void endElement(String name) (...) } 25 TBE Technologie warstwy danych:: XMLowe bazy danych Po co? • Gdy parser nie wystarcza • Dlaczego nie? – Naturalne odzwierciedlenie hierarchii – Samoopisowość – Brak potrzeby konwersji 26 TBE Technologie warstwy danych:: XMLowe bazy danych XML != XML • Dokument danocentryczny (data-centric) • Dokument dokumentocentryczny (document-centric) 27 TBE Technologie warstwy danych:: XMLowe bazy danych Różnice... <Pracownicy> <Pracownik> <Imie>Jan</Imie> <Nazwisko>Kowalski</Nazwisko> <Adres> <Ulica>Matejki</Ulica> <NrDomu>5</NrDomu> <Miasto>Wrocław</Miasto> </Adres> </Pracownik> <Pracownik> .......... </Pracownik> </Pracownicy> <Ksiazka> <Rozdzial poziom=2> <Naglowek>Włókna szklane</Naglowek> <Akapit>Nadajnik na jednym końcu światłowodu jest wyposażony w <Bold>diodę świecącą</Bold> (ang. <Translate>light emitting diode – LED</Translate>) lub <Bold>laser</Bold>, które służą do generowania impulsów świetlnych przesyłanych włóknem szklanym. </Akapit> .......... </Rozdzial> </Ksiazka> 28 TBE Technologie warstwy danych:: XMLowe bazy danych Podejście danocentryczne OracleXMLQuery qry= new OracleXMLQuery(conn,”SELECT Tytul, Autor, Wydawnictwo, Rok FROM” +tabName+”WHERE BookID=1234”); <?xml version=„1.0” ?> <ROWSET> <ROW num=„1”> <TYTUL>Projektowanie baz danych XML”</TYTUL> <AUTOR>Marek Graves</AUTOR> <WYDAWNICTWO>HELION</WYDAWNICTWO> <ROK>2002</ROK> </ROW> </ROWSET> 29 TBE Technologie warstwy danych:: XMLowe bazy danych Podejście dokumentocentryczne • XPath (XSLT) • XQuery • Ale to innym razem... 30 TBE Technologie warstwy danych:: Bibliografia: • • • • • • • • B. Eckel, ‘Thinking in Java 2 ed.’ http://www.kapitanat.one.pl/odb/spis.html C. Bauer, G. King, ‘Hibernate in action’ http://www.enea.com/1348.epibrw (to pdf; in-memory db) www.ibm.com/developerworks Douglas E. Comer, Sieci komputerowe i Intersieci, WNT 2001 http://www.w3schools.com Ł. Jastrzębski, ‘Obiektowo-relacyjna baza danych Oracle obsługująca dokumenty XML’ 31 TBE Technologie warstwy danych:: Podsumowanie Java I/O, JDBC, JDO, Hibernate, In-memory db, XML, XML db Pytania? Dziękuję za uwagę 32