3 - J (suc1)

3 - J (suc1)

3 - J (suc1)


Fichier Détails

Cartes-fiches 68
Langue Deutsch
Catégorie Devinettes
Niveau École primaire
Crée / Actualisé 06.01.2014 / 15.01.2014
Lien de web
https://card2brain.ch/box/3_j_suc1
Intégrer
<iframe src="https://card2brain.ch/box/3_j_suc1/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Ein verteiltes System ist

<Verteilte Systeme und Anwendungen>

ein System, in dem Hard- und Softwarekomponenten, die sich auf untereinander vernetzten Computer befinden, miteinander kommunizieren und Ihre Aktionen koordinieren, indem sie Nachrichten austauschen

Eine verteilte Anwendung ist

<Verteilte Systeme und Anwendungen>

aus verschiedenen Komponenten besteht und ein verteiltes System zur Lösung eines Anwendungsproblems benutzt

Komponenten einer verteilten Anwendung kommunizieren miteinander mit Hilfe von Nachrichten

Einem Standard-Anwender erscheint eine verteilte Anwendung wie eine gewöhnliche, nicht verteilte Anwendung (transparent)

Schichten einer Anwendung

<Verteilte Systeme und Anwendungen>

Datenhaltung Datenbanken / Dateien  

Datenverarbeitung Geschäftslogik / Prozesssteuerung

Datenpräsentation Diverse Datensichten Kommunikation mit Benutzer (UI)

Verteilte Systeme - Vorteile

<Verteilte Systeme und Anwendungen>

Besseres Abbild der Realität (Leistungen werden dort erbracht, wo sie benötigt werden) 

Wirtschaftlichkeit und Lastverteilung

Bessere Skalierbarkeit

Fehlertoleranz

Verteilte Systeme - Nachteile

<Verteilte Systeme und Anwendungen>

Höhere Komplexität durch Verteilung und Heterogenität

Komplexe Netzinfrastruktur

Höhere Sicherheitsrisiken (Verletzlichkeit)

Modell (Abbildung der Wirklichkeit)

<Verteilte Systeme und Anwendungen>

Mit einem Modell werden allgemeine Eigenschaften und Design eines Systems beschrieben    

Die wichtigsten Komponenten des Systems und deren Aufgaben

Die Interaktion zwischen unterschiedlichen Komponenten des Systems

Wie das Verhalten der Komponenten (einzeln und kollektiv) beeinflusst werden kann

Softwareschichten Modell

<Verteilte Systeme und Anwendungen>

Applikation (Unabhängig von Platform)

Middleware (Verbirgt die Heterogenität des verteilten Systems)

Platform

  - OS (ermöglicht zugriff auf systemressourcen)

  - HW

Architektur Modelle, aufgabe

<Verteilte Systeme und Anwendungen>

Das Architekturmodell eines verteilten Systems

vereinfacht und abstrahiert die Erfassung von Funktionen der einzelnen Komponenten

definiert die Verteilung von Komponenten in einem Netz von Computern

definiert die Beziehung von Komponenten untereinander (Rolle in der Kommunikation, Kommunikationsmuster)

Architektur Modelle, Beispiele

<Verteilte Systeme und Anwendungen>

Peer-To-Peer Modell

Client-Server

Client-Server: Variante Applet

Client-Server: Mobile Agenten

Client-Server: Spontane Netzwerke

Mehrfacher Server

Proxy-Server

Aufgabenteilung zwischen Client uns Server bei 2-Tier-Architektur

<Verteilte Systeme und Anwendungen>

Thin Client reine Präsentation von Daten

Fat Client Präsentation, Verarbeitung und teilweise Datenhaltung

Performance von modellen, beinhaltet

<Verteilte Systeme und Anwendungen>

Antworten auf eine Anfrage schnell

Durchsatz von Daten

Lastbalancierung

Quality of Service von Modellen, beinhaltet

<Verteilte Systeme und Anwendungen>

Verfügbarkeit des Systems

Zuverlässigkeit des Systems

Sicherheit

Transparenz durch Middleware, erklärung

<Verteilte Systeme und Anwendungen>

Das verteilte System wirkt wie eine Ganzheit

Der Benutzer nimmt es gar nicht wahr, dass es sich bei dem System, das von ihm benutzt wird, um ein verteiltes System handelt Folie

DBMS-Unabhängigkeit

<DB Zugriff>

Eine Anwendung soll nicht von einem konkreten DBMS abhängig sein.

Eine Zwischenschicht zwischen Anwendung und DBMS soll als "Übersetzer" dienen

Lösungen: ODBC JDBC

 

DBMS und Treiberkonzept

<DB Zugriff>

Allgemeine Definition: Ein DB-Treiber ist eine Softwarekomponente, welche die Kommunikation zwischen einer Anwendung und einer Datenbank ermöglicht.

JDBC-Treiber

ist eine Komponente, welche die Kommunikation zwischen einer Java-Anwendung und einer Datenbank ermöglicht.

stellt für den Client eine einheitliche Java-Schnittstelle zur Verfügung.

Zugriff auf Datenbank - Ablauf

<DB Zugriff>

Erstellung der Verbindung zur Datenbank

Erstellung der SQL-Anweisungsfolge

Senden der Anweisungsfolge zum Datenbank-Server und ihre Ausführung

Verarbeitung der Ergebnisse

Schliessen der Verbindung zur Datenbank

Laden eines JDBC-Treibers

<DB Zugriff>

Class.forName("org.postgresql.Driver");

Verbindung aufbauen

<DB Zugriff>

String url = "jdbc:postgresql://147.88.100.100:5432/raum_db";

String user = "student";

String pwd = "geheim";

// Aufbau der Verbindung

Connection con = DriverManager.getConnection(url, user, pwd);

Statement kreieren

<DB Zugriff>

Statement stm = con.createStatement();

Schreibender Zugriff

<DB Zugriff>

int anz = 0;

String delQuery = "DELETE FROM tbl_raum WHERE id_raum=2";

anz = stm.executeUpdate(delQuery)

Lesender Zugriff

<DB Zugriff>

String query = "SELECT * FROM tbl_raum";

ResultSet rs = stm.executeQuery(query) 

ResultSet durchlaufen

<DB Zugriff>

while(rs.next()){

str = "Raum: " + rs.getString("bezeichnung");

str += ", Anz. Plaetze: " + rs.getInt("anz_plaetze");

System.out.println(str);

}

Verbindung schliessen

<DB Zugriff>

.close

Connection

Statement

ResultSet

Beim Schliessen einer Connection-Instanz, werden alle Statement- und ResultSet-Instanzen implizit geschlossen

Transaktionen

<DB Zugriff>

bild

Property-Datei, aufgabe

<DB Zugriff>

Bei einem Austausch des DBMS muss einzig die entsprechende property-Datei ersetzt bzw. angepasst werden, während der Programmcode unangetastet bleibt

Die entsprechende Treiberklasse muss verfügbar und im CLASSPATH sein

Metadaten, arten

<DB Zugriff>

DatabaseMetaData

ResultSetMetaData

Idee von OR mapper

<OR mapping>

 

 

 

Das Ziel: Ein Framework haben, das die Übersetzung zwischen "objektorientiert" und "relational" möglichst automatisch vornimmt.

Beispiel: - JPA als Spezifikation und

- Hibernate / EclipseLink / OpenJPA als Implementierung (Provider)

 

Java Persistence API (JPA)

<OR mapping>

- JPA ist eine Spezifikation, mit der die für OR-Mapping benötigten Funktionalitäten in der Java-Welt definiert werden.

- Vorteile:

- ermöglicht das Speichern von Daten auf OO-Weise (als Objekte)

- einfach im Gebrauch und nicht von irgendeinem Provider abhängig

- in der Industrie von führenden Unternehmen eingesetzt

- stellt die Portabilität von Anwendungen sicher

- kann sowohl mit JEE als JSE verwendet werden

Anforderungen an ein O/R Mapper !!!

<OR mapping>

- Verbindungsverwaltung

- Mapping von Klassen auf Attribute auf Tabellen und Spalten

- Formulierung und Ausführung von SQL-Befehlen

- Transaktionssteuerung

- Verwaltung von Relationen und Navigation darüber

- Abbildung von Vererbungsbeziehungen

- Generierung technischer Ids

- Zurverfügungstellung objektorientierter Suchmöglichkeiten

- Caching von Daten

Klase ORM fähig machen

<OR mapping>

import ...  

@Entity  

implements serializable => add generated UID  

@Id

@GeneratedValue

private int id; => generate setters and getters for id  

(OneTo...)  

standard konstrukor  

TODO in der testklasse

 Annotationen

<OR mapping>

sind Sprachelemente, mit denen das Einbinden von Metadaten in den Quellcode möglich wird

- beginnen mit dem Zeichen @ gefolgt von dem Namen der Annotation

- können (optional) auch Parameter enthalten

- Annotationen werden von einer passenden Komponente (z. B. beim Compilieren des Quellcodes) entsprechend verwertet

Annotationen Beispiele

<OR mapping>

- @Entity - @Id - @GeneratedValue(strategy=GenerationType.AUTO) - @Column(name="Nachname") - @JoinTable(name="student_lerngruppe") - @JoinColumn(name="lerngruppe_id") - @ManyToMany(mappedBy="projects")

Persistenzkontext !!!

<OR mapping>

Die Summe aller von einem EntityManger verwalteten Entities

- Kann sich, je nach Bedarf, ändern:

  neue Entities werden hinzugefügt

  eine oder mehreren Entities werden entfernt (detached)

JPA-Provider braucht diverse Informationen, um - Verbindung zur Datenbank aufzubauen und - Tabellen anzulegen

<OR mapping>

Die Datei persistence.xml muss im Verzeichnis META-INF sein (siehe das Bild)

Erzeugen einer EntityManagerFactory

<OR mapping>

entityManagerFactory = Persistence.createEntityManagerFactory("BooksPU");

Kreieren eines EntityManager-Objekts

<OR mapping>

EntityManagerFactor factory = JpaUtil.getEntityManagerFactory();  

EntityManager em = factory.createEntityManager();

 

Methoden der Klasse EntityManager

<OR mapping>

void persist (Object entity)

<T> T find(Class<T>, Object primaryKey)

<T> T merge (T entity)

void remove (Object entity)

Adresse speichern

<OR mapping>

em.getTransaction().begin();

Adresse adr = new Adresse ( … );

em.persist(adr);

em.getTransaction().commit();

em.close();

Assoziationen

<OR mapping>

- Ownership: A oder B

- Kardinalität: 1:1, 1:n, m:n

- Direktionalität: ja / nein

zusätzliche Verknüpfungstabelle

<OR mapping>

@JoinTable