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

Podobne dokumenty