Transaction Script Software Component Technology for Distributed Applications.

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

Object Relational Mapping
Objektrelationales Mapping mit JPA
Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
1 Kapitel 9: Datenbankapplikationen. 2 Datenbankapplikationen MS Access Embedded SQL JDBC Application JDBC Applet Java Servlet Java Server Pages Cold.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
MySQL.
Internetzugriff mit Strings und Streams
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Java 2 Enterprise Edition (J2EE)
Seminar: XML für Fortgeschrittene Referent: Katrin Apel
Java: Grundlagen der Objektorientierung
Konstruktoren.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Datensicherheit in DBMS
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
JDBC Konzepte Realisierung von Zugriffen
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
EXtensible Server Pages von Belrhiti El mostafa. Inhalt Was ist XSP ? Wichtige XSP Tags Erstellungsmöglichkeiten Die Basis der XSP.
Modellierung der Zugriffslogik auf Datenbanktabellen Software Component Technology for Distributed Applications Andreas Fink.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
Command Pattern Karola Schäuble,
DVG Einführung in Java1 Einführung in JAVA.
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
JDBC EDV JDBC.
Datenbanken 13: Objekt-Klasse-Datenbank
Datenbanken 10: Einfügen, Ändern, Löschen
Erhard Künzel für Info 9. Klasse: Digitale Schule Bayern © Erhard Künzel.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Cursor-Konzept u Zugriff auf Mengen von Ergebnistupeln u In SQLJ Iteratoren u Vergleichbar.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
2.2 Definition eines Datenbankschemas (SQL-DDL)
J2EE Conformance von JDBC Middleware und EJB Applikation Server Detlef KünzelSystemberater +49 (0)
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
UML Begleitdokumentation des Projekts
JDBC: JAVA Database Connectivity
objekt-relationale Datenbanken
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
Rekursive Funktionen (Fakultät)
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Wir bauen uns eine Webapplikation!
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
PHP und MYSQL am Organisatorisches Der komplette Kurs im Schnelldurchgang Bewertung von wichtig und unwichtig Historisch Kulturwissenschaftliche.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Advanced Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 2 ADO.NET s.a:
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
JDBC (Java DataBase Connectivity)
Webseiten mit PHP, SQL, XML und Webservices Anhand praktischer Beispiele.
Hibernate (OR-Mapping)
Datenbankanbindung mit
Javelin Internet-based parallel computing using Java.
Programmiervorkurs WS 2014/15 Methoden
Mehrschichten- Architektur. Sinn: Zur Strukturierung von Software, die eine spätere Änderung erleichtert und eine Wiederverwendbarkeit der einzelnen Komponenten.
XQuery 1.0 – Arbeitsweise Mögl. Eingaben Das wird berücksichtigt: Typen von XPath und XML Schema Namensräume, Module Ergebnis: XML-Instanz.
Termin Festlegung Einführung MySQL Runterladen MySQL, Pentaho Design Studio Betrachtung Pentaho
TypoScript.
Prolog: Datenbanken Inhalt - Überblick - Erstellen einer Datenbank
Datenbank für Skriptenverkauf
Datenbanken erstellen mit PostgreSQL
1 Persistence Strategies for WebServices Senior Consultant Java Forum Stuttgart, 27. Juni 2002.
Reorganisation und Administration großer SAP-DB Manfred Riemer SAP AG (z.B. MCOD-Systeme)
SQL Structured Query Language Enzio Thiem. INHALT CREATE TABLE Anweisung Gängige Datentypen Beispiel CREATE TABLE Beispiel CREATE TABLE - erweitert Beispiel.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Sichten.
Implementieren von Klassen
 Präsentation transkript:

Transaction Script Software Component Technology for Distributed Applications

Transaction Script Überblick Domain Logic TransactionScript Domain Model Tabel Modul Eingabe und Präsentation trennen Daten verarbeiten und Ergebnis in DB schreiben

Transaction Script Wie funktioniert TS Domain Logic Design hängt von Transaktion ab, die ausgeführt werden soll Transaction Script befindet sich: Server Pages CGI-Scripten Verteiltem-System-Objekt Isoliere Transaction Script von Präsentation so gut wie möglich Testvorteile Erweiterbarkeit

Transaction Script Struktur von TS Mehrere TS in einer einzigen Klasse Jedes TS in einer eigenen Klasse, indem das Command pattern [Gang of four] anwendet wird. Manipulieren von Instanzen von Scripten zu Laufzeiten Eine Annäherung: meist gibt es für jede DB- Transaktion ein Transaction Script

Transaction Script Wann wird TS eingesetzt Vorteil: Simplizität Wenn die Anwendung nur wenig Logik beinhaltet Nachteil: Duplikation: gemeinsamer Code tendiert dazu dupliziert zu werden Domain Model Comlexity of Domain Logic Effort to Enhance Transaction Script

Transaction Script Beispiel CREATE TABLE products (ID int primary key, nam varchar, type varchar) CREATE TABLE contracts (ID int primary key, product int, revenue decimal, dateSigned date) CREATE TABLE revenueRecognitions(contract int, amount decimal, recognizedOn date, PRIMARY KEY (contract, recognizedOn) ) Textverarbeitung Tabellen Datenbanken sofort 1/3 sofort 1/3 60 Tagen1/3 in 90 Tagen 1/3 sofort 1/3 30 Tagen1/3 in 90 Tagen

Transaction Script Beispiel Class Gateway... public ResultSet findRecognitionsFor(long contractID, MfDate asof) throws SQLExceptions { PrepareStatement stmt = db.prepareStatement(findRecognitionsStatement); stmt =db.prepareStatement(findRecognitonsStatment); stmt.setLong(1, contractID); stmt.setData(2, asof.toSqlDate()); ResultSet result = stmt.executeQuery(); return result; } private static final String findRecognitionsStatements = SELECT amount + FROM revenueRecognitions + WHERE contract = ? AND recognizedOn <= ?; private Connection db;

Transaction Script Beispiel Class RecognitionService... Public Money recognizedRevenue(long contractNumber, MfDate asOf) { Money result = Money.dollars(0); Try { ResultSet rs = db.findRecognitionsFor(contractNumber, asOf); While(rs.next()){ Result = result.add(Money.dollars(rs.getBigDezimal(amount))); } return result; }catch(SQLException e) { throw new ApplicationException (e); }

Transaction Script Class RecognitionService... Public void calculateRevenueRecognitions(long contractNumber){ Try{ ResultSets contracts = db.findContract(contractNumber); contracts.next(): Money totalRevenue = Money.dollars(contracts.getBigDecimal(revenue)); MfDate recognitionDate = new MfDate(contracts.getDate(dateSigned)); String type = contracts.getString(type); if(type.equals(S)){ Money[]allocation =totalRevenue.allocate(3); db.insertRecognition(contractNumber, allocation[0], recognitationDate); db.insertRecognition(contractNumber, allocation[1], recognitationDate.addDays(60)); db.insertRecognition(contractNumber, allocation[2], recognitationDate.addDays(90)); }else if(type.equals(W)){ Money[]allocation =totalRevenue.allocate(3); db.insertRecognition(contractNumber, allocation[0], recognitationDate); }else if(type.equals(D)){ Money[]allocation =totalRevenue.allocate(3); db.insertRecognition(contractNumber, allocation[0], recognitationDate); db.insertRecognition(contractNumber, allocation[1], recognitationDate.addDays(60)); db.insertRecognition(contractNumber, allocation[2], recognitationDate.addDays(90)); } }catch(SQLException e) {throw new ApplicationException (e);}}

Transaction Script Beispiel Class Gateway.... Public Result findContract (long contractID) throws SQLException { PreparedStatement stmt = db.prepareStatement(findContractStatement); Stmt.setLont(1, contractID); ResultSet result = stmt.executeQuery(); Return result; } private static final String findContractStatement = SELECT * + FROM contracts c, products p + WHERE ID = ? AND c.product = p.ID;

Transaction Script Beispiel Class Gateway.... Public void insertRecognition(long contractID, Money amount, MfDate asof) throws SQLException { PreparedStatement stmt = db.prepareStatement(insertRecongnitionStatement); Stmt.setLong(1, contractID); Stmt.setBigDezimal(2,amount.amount()); Stmt.setDate(3, asof.toSqlDate()); Stmt.executeUpdate(); } public static final String insertRecognitionStatement = INSERT INTO revenueRegnitions VALUES(?,?,?); }