Arkitektur Embedded SQL Tema Persistens

Slides:



Advertisements
Lignende præsentationer
SPBG.  Test driven development  Unit test frameworks  MOSS TDD  Mocking  Design patterns.
Advertisements

Indsæt nyt billede: Format: B 254 x 190,5 mm Efter indsættelse, højreklik på billedet og placér det bagerst. Delete det gamle foto Legal aid in Denmark.
Teknik og Miljø - Planlægning og Byggeri Aarhus Kommune •Flemming Meyer •Master of Law, Special Consultant •Municipality of Aarhus •Department of employment.
Overskrift her Navn på oplægsholder Navn på KU- enhed For at ændre ”Enhedens navn” og ”Sted og dato”: Klik i menulinjen, vælg ”Indsæt” > ”Sidehoved / Sidefod”.
Dagens program  Emne: Tim Berners-Lees WWW koncept og deraf følgende innovationer Forbered hver for sig Præsenter og diskutér i grupper Fremlæggelse med.
Select one of the 3 title pages and delete the others. Please do not create new title pages by using the layouts Title 1 – 3 as these layouts do not contain.
Lone Møller Sørensen Director, SBi, Aalborg University ECTP- Denmark A national platform for Denmark
Overskrift her Navn på oplægsholder Navn på KU- enhed For at ændre ”Enhedens navn” og ”Sted og dato”: Klik i menulinjen, vælg ”Indsæt” > ”Sidehoved / Sidefod”.
E/R model Enhanced E/R-model (EE/R-model) Relationelle model Relationelle algebra Omformning fra E/R-model til relationelle model Tirsdag.
Tekst starter uden punktopstilling For at få punkt- opstilling på teksten, brug forøg indrykning For at få venstre- stillet tekst uden punktopstilling,
13 – Database med JDBC. 2 NOEA2009Java-kursus – JDBC JDBC JDBC er et standard bibliotek til at tilgå relational databaser API’et er en standardiseret.
1 JavaServer Faces Copyright © Lund & Bendsen Dynamikken i JSF.
C#: Udtryk og metoder. Indhold “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” Udtryk.
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
06 – Java Packages Packages og ClassPath. 2 NOEA2009Java-kursus – Packages og class path Hvad er Packages? En package er en gruppering af relaterede typer.
Item gennemgang  Item: 01 – Static factory methods  Item: 09 – Override hashCode  Item: 17 – Design & document inheritence  Item: 25 – Lists over arrays.
Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,
Arne Winther Et værdifuldt samarbejde mellem hospital og produktudvikler.
1 Netværksprogrammering 2 Plan Socket-baseret kommunikation Fjernmetodekald (RMI) - Designmønsteret Proxy Databasetilgang (JDBC)
Indsæt nyt billede: Format: B 254 x 190,5 mm Efter indsættelse, højreklik på billedet og placér det bagerst. Delete det gamle foto Model-Driven Development.
View Procedures Trigger og Function Jesper Tørresø DAB1 E07 1. november 2007.
CodeIgniter Database Brugerinput Form Validation 20101JFH.
Algoritmer og Datastrukturer 1 Greylisting Gerth Stølting Brodal.
Database Normalization without Mathmatics
Objekter og klasser Applikationsdesign Code Namespace Value og reference typer Reference type Rasmus D. Lehrmann1.
FEN Databaser/DBAdgang21 DB-adgang - Connectionless Connectionless DataAdapter DataSet.
Overskrift her Navn på oplægsholder Navn på KU- enhed For at ændre ”Enhedens navn” og ”Sted og dato”: Klik i menulinjen, vælg ”Indsæt” > ”Sidehoved / Sidefod”.
Litteratursiden / forfattere / anmeldelser / analyser / lister / temaer / læseklubber / video / brugere Digital communication of performance literature.
Distribution af funktionalitet Webservice med WCF x.
COMPONENT ARCHITECTURE FOR THE ENTERPRISE Bjarne Schytte Country Manager BEA Systems The Enterprise Middleware Solution “Open Networks 99”
Abstrakte klasser og interfaces i Java
Object-Orienteret Programmering og Design Kilde: Joe Hummel.
Programering af mobile enheder Windows Phone Storage.
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 6 Design - part 1.
Linking international students and Danish businesses.
Agenda 1.Informationer 1.Excel i fb.m. projekt 2 2.Reserver tid til projekt 2 3.Øvelse: a / b = c 2.Opsamling fra sidst 3.Estimation (konfidensintervaller)
Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister.
N-lags design/Otto Knudsen 1 N-lags Design Definition Motivation.
Session Når man hoster en WCF Service på ASP.NET website, kan man bruge ASP.NET’s Session.
Gruppe sort Morten, Peter, Jesper, Spencer & Støving.
Opsummering.
KLAR TIL NYE MULIGHEDER
Begreber og Redskaber 5. Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning.
Business case - Gevinstoverblik Forsikring eksempel
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
Erfaringer og dialog omkring transforms AFP/PDF/AFP AFP Brugergruppemøde Maj 2012 Jørgen Ulrich.
Tekstslide i punktform Rubrik, helst 1 linje Brug ”Forøg/Formindsk indryk” for at få de forskellige niveauer frem Danish Standards  Signe Annette Boegh.
SQL Jesper Tørresø DAB1 E oktober Punkter for i dag. SQL baggrund. Relationel algebra. Brug af VS2005.
8.7 Security: Grant and revoke1 Sikkerhed 8.7 Security and User Authorization in SQL.
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
10. Datastrukturer. 2 Nordjyllands Erhvervakademi Collections library Datastrukturer i.NET kaldes normalt Collections Findes i namespace System.Collections.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
ADO.NET Databaser SQL Client (SQL server 7 og senere) OleDb (en række incl. jet) ODBC MySql (ekstra driver skal instaleres) Oracle (XML dataset) Samme.
SQL Jesper Tørresø DAB1 E September Punkter for i dag. SQL baggrund. Relationel algebra. SQL koncept –Vises ved brug af VS2008.
8.5 JDBC1 JDBC 8.5 Java Database Connectivity. 8.5 JDBC2 JDBC introduktion, 393 JDBC er ikke en forkortelse for –Java Database Connectivity Sun har defineret.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Databaseadgang fra C#:
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
 Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler.
 Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler.
Et Audio/ Video Framework Et framework for en audio/video applikation baseret på lokale og kilder tilgængelige på 1394 via AV/C protokollen.
Omsætning af en model til en RDB Jesper Tørresø DAB1 F Marts 2008.
Database Some walk through lv/ Figures & some text from: © Pearson Education Limited 1995,
Solution Makers A/S – Gruppe 4 Lars Wolter Nils Martinsen Rasmus Seye Tobias Kjeldsen 1.
Compositional Design Principles “SemiCiv”
Software Testing Software testing.
New proposal for “Class IX Front and Close-proximity Passenger-side”
Præsentationens transcript:

Arkitektur Embedded SQL Tema Persistens Databaser Arkitektur Embedded SQL Tema Persistens

Databasearkitektur Basis valg (constraints): En objekt orienteret tilgangsvinkel Data gemmes i en relationel RDBMS Spørgsmålet er i forbindelse med database arkitekturen: Hvordan kan vi på den ene side adskille implementations detaljer vedr. databasen (sql’en) fra forretningskoden OG stadigvæk bruge faciliteterne I databasen

Problemet Employee String fname; String lname; String ssn; String adress; ……. Employee superssn; Department dno; Objekt model / relationel model Fname Lname Ssn ………. superssn dno Dname Dnumber Mgrssn mgrstartdate

Architecture When mapping between an object model and a relational model – it has to be implemented in the application. There are 3 fundamental strategies: Brute Force Data Access Objects Persistence Framework

Brute Force The fundamental strategy is that the business objects access directly to the data source. It is used when no database layer is available. It is simple an presumes that the programmer has full control of how the business objects interact with the database. This access is the right when the demand for access are straight forward. Will give code with low cohesion and high coupling (difficult to maintain)

Data access objects Data access objects encloses the required database logic from the business objects. One data access class for each business object The class consist of the code, which is necessary for accessing the database (sql code). The advantage is that all sql code is in the data access objects (high cohesion, low coupling) You have to write a DAO for each business class

Persistence framework Seal the database access completely from you business object. In stead of writing the logic of the database access, you define the Meta data which represents the mapping. PF generate the necessary code which enables the business objects to become persistent. You will have to buy a framework

Architecture Layered architecture, Data access objects GUI - Layer Control Layer Model Layer DB Layer

DB layer Consist of : A connection class (implemented as a singelton) An interface for each business class (Interface) One class for each business class

Connection class Implemented using the singleton pattern The singleton pattern ensures that only one instance of a class is created. All objects that uses an instance of that class use the same instance. The purpose is to get a connection to the database

private DbConnection() // private implemented as a Singleton { String url = driver + databaseName; try{ //load af driver Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(Exception e){ System.out.println("Can not find the driver"); System.out.println(e.getMessage()); }//end catch //connection to the database con = DriverManager.getConnection(url, userName,password); //set autocommit con.setAutoCommit(true); dma = con.getMetaData(); // get meta data System.out.println("Connection to " + dma.getURL()); System.out.println("Driver " + dma.getDriverName()); System.out.println("Database product name " + dma.getDatabaseProductName()); }//end try System.out.println("Problems with the connection to the database"); }//end constructor

//DBConnection cont.. //this method is used to get the instance of the connection public static DbConnection getInstance() { if (instance == null) { instance = new DbConnection(); } return instance;

Interface ……… public interface IFDBEmp { // get all employees public ArrayList getAllEmployees(boolean retriveAssociation); //get one employee having the ssn public Employee findEmployee(String empssn, boolean retriveAssociation); //find one employee having the name public Employee searchEmployeeFname( String fname, boolean retriveAssociation); public Employee searchEmployeeLname( String fname, boolean retriveAssociation); public Employee searchEmployeeSsn( String fname, boolean retriveAssociation); //insert a new employee public void inserEmployee(Employee emp); //update information about an employee public int updateEmployee(Employee emp); }

Company Example DB classes – Private methods singleWhere (is used to retrieve a singel tuple from the database) michWhere ( is used to retrieve multiple tuples from the database) buildquery (build the sql select-statement) build<class> (build the object, with information from the database)

Tilgang til databasen fra Java Databaser Tilgang til databasen fra Java

Database tilgang fra java Database tilgang tilbydes af pakken sql - Vi anvender følgende klasser DriverManager Connection Statement ResultSet DatabaseMetaData ResultSetMetaData

Fremgangsmåde Åben forbindelsen til databasen Udfører SQL for at opdaterer/læse fra databasen Opbyg et string objekt der indeholder sql statment der skal udføres Lav et Statement objekt Udfør statement Behandling af resultatet Luk forbindelsen

Åben forbindelsen Load af driver Skaf connection object // mySQL Class.forName("org.gjt.mm.mysql.Driver"); //SQL Server Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Skaf connection object con = DriverManager.getConnection(url,bruger,password); url = "jdbc:odbc:company” bruger og password som oprettet under installering Eksempel: klassen DbConnection Databasenavnet

Udfør SQL Opbyg SQL-statement i et String objekt: String query="SELECT * FROM Employee WHERE ssn = " + id; Lav Statement objekt: Statement stmt = con.createStatement(); stmt.setQueryTimeout(5); Udfør ResultSet results = stmt.executeQuery(query); executeUpdate, ved delete, update og insert

Behandling af resultatet Objektet opbygges på baggrund af resultatet af søgningen if( results.next() ){ emp.setFname(results.getString(2)); emp.setAdresse(results.getString(4)); } stmt.close(); results er af typen ResultSet

Luk forbindelsen con.close(); Eksempel: Company

Opsætning af Driver Inden vi kan anvende en database fra Java skal driveren være tilgængelig