Java & het Web Programma: Databases (jdbc, JNDI, ORM, JPA)

Slides:



Advertisements
Verwante presentaties
Module 7 – Hoofdstuk 5 (1) SQL – een begin.
Advertisements

Databases via internet
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 14: Eerste echte e-commerce applicatie: Implementatie (vervolg)
PHP & MYSQL LES 03 PHP & DATABASES. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
17 april 2008 WAB*info De digitale bron van de Nederlandse waterbodems Gaston Lamaitre Data-ICT-Dienst, Delft Uitvoerders: Atlis (hoofdaannemer), CSO (functioneel.
Van domeinklasse tot implementatie
Webapplicaties: de serverkant
Base: bewerkingen 2 soorten - Oplopend- Aflopend.
Cliënt-server omgeving
Klassen en objecten.
Klik op de berichtenbalk op Bewerken inschakelen,
Java patterns Introductie tot GoF patterns in Java.
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Inleidend probleem Data structuur (hiërarchie van classes)
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Wolter Kaper - Ruby on Rails Webtoepassing ontwerpen Webprogrammeren, week 1.
Java DataBase Connectivity
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
Relationele Databases Hoofdstuk 10 Deel 2 Blz.: 90 t/m 95.
CSA, week 31 CSA week 3. CSA, week 32 Terugblik opdracht (client)  Stub creëren uitgaande van IOR ( string_to_object ) of stub creëren uitgaande van.
Deel 9: Relationele Databases: Oef. & 1e client- server app 1 Internetapplicaties Deel 9: Relationele Databases: Oefeningen en 1e client- serverapplicatie.
Deel XXI 1 Internetapplicaties Internetprogrammeren Capita Selecta.
Internetapplicaties - V Sessies 1 Internetapplicaties Deel 5: Sessies.
Deel XX Hosting 1 Internetapplicaties Deel XX Hosting.
Deel X: JSP + Java + database 1 Internetapplicaties Deel 10: JSP + Java + database: Client Server via http.
Service Oriented Architecture
Keuzetraject Software Ontwikkeling. Moderne technologieën Doel : mee kunnen draaien in elk team Aangeleerde vaardigheden Zelfstandig problemen kunnen.
Keuzetraject Software Ontwikkeling. Marktvraag Mark Heeren (ceo CSC Benelux): –Nieuwe mensen aannemen wordt weer moeilijk, men stelt meer eisen over auto.
In samenwerking met HowITsDone Spring as legacy Hoe innovatie legacy kan worden.
JSF cursus deel 1 oefeningen
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Datacommunicatie en netwerken
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Datamodellering en –verwerking 8C020 college 9. Terugblik college week 8 Terugkoppeling opdracht deel A Toepassingen van Petri-netten in biologie Oefeningen.
Polymorphisme en Interfaces: inleiding
Prototyping Week 7 // Tweenlite & API. TweenMax Snel mooie en effectieve animatie.
Kennisnet – Copacabana Van Dienst naar Service.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 8: Gebruikersinterface © 2014, Gertjan Laan, versie 2.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
INFITT01 - Internettechnologie WEEK 3. Programma Sessies JSP.
Enterprise Service Bus IBK3ESB01
Java & het Web Programma: 3rd party libraries Standard actions (E)xpression (L)anguage.
Java & het Web Programma: Beveiliging Filters. Security.....wat is dat(1)? Beveiliging draait om 4 belangrijke steunpilaren: 1.Authenticatie: is de persoon.
Java & het Web Programma: Contexts Listeners Scope/Attributes Thread safety.
Java & het Web Programma: De essentie van een web applicatie (webapp) Protocol van een webapp Talen van het web Java Servlets & Containers.
Java & het Web Programma: Sessies JSP. Stateless vs. Stateful(1) HTTP is stateless WAT IS STATELESS?
Java & het Web Programma: JSP. JSP....herhaling Welke van de volgende expressions is geldig/ongeldig? %>
Java & het Web Programma: JSTL Uitgebreide demo. JSP....herhaling Standard actions en (E)xpression (L)anguage: -Standard actions hebben de syntax:
Node.js en NPM. Node.js Open source, crossplatform runtime omgeving voor server-side javascript applicaties, primair bedoel snelle, schaalbare netwerk.
Over de fabels en feiten van applicatiebouw en de invoering van het Spring Framework 16 december 2014 Ferdy du Chatenier / Gilbert van den.
GUI & classes Een Gui in een class steken en het object gebruiken.
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Methoden
OOS Object geOrienteerd Software-ontwerp - 5
Unified Modeling Language
ASP.NET MVC Web Development
Implementatie Zoekboom
Software Development fundamentals
Software Development fundamentals
ASP.NET MVC Web Development
ASP.NET MVC Web Development
ASP.NET MVC Web Development
ASP.NET MVC Views.
Software Development fundamentals
Software Development fundamentals
Transcript van de presentatie:

Java & het Web Programma: Databases (jdbc, JNDI, ORM, JPA) MVC & Spring/Struts EJB

 Databases.....wat is dat(1)?     Veel web applicaties moeten informatie over langere tijd op kunnen slaan. Een voor de hand liggende manier is om deze informatie in een database op te slaan. Een aantal: Oracle SQLServer MySql Postgres HSQL McKOI Daffodil Firebird

JDBC....wat is dat(1)? Om een database vanuit een webapp te kunnen benaderen heb je een jdbc driver nodig. Dit is een jar welke in het CLASSPATH moeten komen te staan van de webserver, bijv de WEB-INF/lib of, in geval van Tomcat, in de CATALINA_HOME/lib map. Dan is de driver voot alle webapps beschikbaar

JDBC....wat is dat(2)? public class TestDBOracle {   public static void main(String[] args)       throws ClassNotFoundException, SQLException   {     Class.forName("oracle.jdbc.driver.OracleDriver");        String url = "jdbc:oracle:thin:@myhost:1521:xe";     Connection conn =          DriverManager.getConnection(url,"scott","tiger");     conn.setAutoCommit(false);     Statement stmt = conn.createStatement();     ResultSet rset =          stmt.executeQuery("select BANNER from SYS.V_$VERSION");     while (rset.next()) {          System.out.println (rset.getString(1));     }     stmt.close();     System.out.println ("Ok.");   } } Leg uit waarom het meestal interfaces zijn ivm implementatie

JDBC....wat is dat(3)? Er zijn een aantal nadelen aan het gebruik van een directe JDBC connectie: Gebruikersnaam/wachtwoord opgeslagen in iedere web app (bijv. als servlet init parameter) die een database gebruikt. Programmatisch beheren van database connecties.   Wat je wilt is een 'pool' waarin database connecties aanwezig zijn. Als je er een nodig heb dan vraag je er een. De connectie wordt automatisch teruggezet in de pool als je 'm niet meer nodig hebt.

JNDI....wat is dat(1)? JNDI = Java Naming & Directory Interface   Het is een collectie interfaces/classes welke een soort telefoonboek vormen binnen een webserver.

JNDI....wat is dat(2)? De essentie van JNDI i.c.m. databases is: Koppel een datasource binnen bijv. Tomcat aan een logische 'JNDI' naam, meestal iets als 'jdbc/klanten' Vanuit een servlet kun je een connectie verkrijgen middels een 'JNDI' aanroep. Een pool manager binnen Tomcat regelt het openen en sluiten van database connecties. Het handige van JNDI is dat je niet hoeft te weten als programmeur waar bijv. de database staat...dat is transparant voor je.

ORM/JPA....wat is dat(1)? De manier waar op relationele databases en Java met data om gaan verschilt sterk.   Relationele database: data wordt in tabellen/rijen opgeslagen. Java: Data wordt als object met attributen opgeslagen/weergeven. Probleem: hoe kun je rijen 'mappen' naar objecten?  Dit heet Object Relationale Mapping

ORM/JPA....wat is dat(2)? Zonder een mapping is het in Java lastig werken met bijv. een java.sql.ResultSet. Dit is in feite een tweedimensionale array waar je vervolgens door heen moet 'loopen' om de juiste data te vinden.   Wat je wilt is dat je na een database query een 'Customer' object terug krijgt ipv een ResultSet met klant data, bijv: Customer cust = dbService.getCustomer(1);

ORM/JPA....wat is dat(3)? JPA is een Java Specificatie die beschrijft hoe je objecten kunt 'mappen' op rijen in tabellen. Een centrale class binnen JPA is de 'javax.persistence.EntityManager'.    Hibernate is een implementatie van JPA. Meer info: http://download.oracle.com/javaee/5/tutorial/doc/bnbpz.html

MVC....wat is dat(1)? MVC staat voor Model-View-Controller en is een Design Pattern. In principe zou je een hele webapp in een servlet/JSP kunnen bouwen.......ja...dat kan......is het handig? Nou nee...... MVC wil zeggen dat je een applicatie (web, fat client) onderverdeeld in een data  deel (Model) en layout deel (View) en een verbindend deel tussen deze twee (Controller). Vraag: Wat is een design pattern?

MVC....wat is dat(2)?   Hoe kun je dit gebruiken binnen een webapp? Een paar vuistregels: Gebruik JSP voor de View. Een JSP er alleen om de data te tonen en haalt nooit zelf data op uit bijv. een database. Logica (EL, geen java)in een JSP is er alleen tbv layout. Servlets worden gebruikt als Controller. Zij delegeren het ophalen van data voor de view naar een andere class welke de data op haalt. De opgehaalde data wordt bijv. in het request gezet tbv de View.  POJO classes (Java Beans) fungeren als Model. Data wordt opgehaald, bewerkt en opgeslagen in Java Beans door bijv. Service classes.  

MVC....wat is dat(3)?  

MVC....wat is dat(4)? De gele Controller is een Service class welke een bepaalde interface implementeert, bijvoorbeeld een interface 'KlantService' met een methode om alle klanten op te halen. Maak vervolgens een class die deze interface implementeert. Zo bevorder je 'loose coupling' (en dat is goed). Je kunt nu je implementatie veranderen zonder de aanroepende classes te hoeven veranderen In aanroepende servlet: KlantService ks = new KlantServiceImpl(); Customer cust = ks.getCustomer(1); KlantServiceImpl kan nu makkelijk vervangen worden door een andere class die KlantService implementeert  

MVC....wat is dat(5)? Er zijn frameworks die helpen het MVC paradigma te implementeren. Struts (gedateerd) Spring (complex, wordt veel gebruikt) Wicket JSF  

EJB....wat is dat(1)? Tot nu toe zijn alleen servlet containers aan bod gekomen. Servlet containers zijn handig maar kunnen beperkingen hebben in zware Enterprise applicaties. Dan kan het gebruik van een applicatie server handig zijn. In een applicatie server kun je (E)nterprise (J)ava (B)eans gebruiken om business logica uit te voeren.

EJB....wat is dat(2)?  

EJB....wat is dat(3)? Applicatie Servers moeten volgens de specificaties standaard een aantal diensten leveren die niet standaard door een servlet container geleverd worden zoals bijv:   JNDI JMS JDBC RMI Security Transactie management  

EJB....wat is dat(4)? Een voorbeeld EJB3 bean. Deze bean wordt gedeployed in een applicatie server en zou vanuit een servlet container op een andere machine aangeroepen kunnen worden via JNDI. @Stateless public class CalculatorImpl implements CalculatorRemote, CalculatorLocal { public int sum(int add1, int add2) { return add1+add2; } public int multiply(int mul1, int mul2) { return mul1*mul2; } }

EJB....wat is dat(5)? Een aantal applicatie servers: Jonas Glassfish   Jonas Glassfish Oracle Weblogic JBoss Geronimo OpenEJB