Mit Java von der Datenbank in den Browser Thomas Bröll Principal Consultant Trivadis GmbH, Stuttgart BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA HAMBURG COPENHAGEN LAUSANNE MUNICH STUTTGART VIENNA ZURICH
Agenda DB Bilder: eclipse.org, apache.org, hibernate.org, jersey.java.net, primefaces.com, Trivadis Free Picture Finder 2 20.07.2016
Java EE 7 (http://www.oracle.com/technetwork/java/javaee/tech/index.html) 3 20.07.2016
Multilayer-Architektur Präsentation (Angular JS) REST (JAX-RS) Präsentation (JSF) Business Logik (EJB) Persistence (JPA) Systemgrenze DB 4 20.07.2016
Ansatz Bottom-Up Datenbank (Geo) Java Persistence API Enterprise Java Beans Java API for RESTful services Contexts & Dependency Injection Java Server Faces 5 20.07.2016
Project -> New 6 20.07.2016
Project setup Einfaches Maven-Projekt <groupid>de.test</groupid> <artifactid>jee-demo</artifactid> Dependencies & more <dependency> <groupid>javax</groupid> <artifactid>javaee-api</artifactid> <version>7.0</version> <scope>provided</scope> </dependency> 7 20.07.2016
Maven build cycle Validate Compile Test Package Verify Install Deploy Integriert in Eclipse, NetBeans, IntelliJ, Bewährte Continuous Integration Und mehr https://sonarqube.com/overview?id=org.acti viti%3aactiviti-root + Plugins 8 20.07.2016
Continuous Integration Bilder: eclipse.org, netbeans.org, apache.org, sonatype.org 9 20.07.2016
Java Persistence API (JPA) 10 20.07.2016
Java EE 7 (http://www.oracle.com/technetwork/java/javaee/tech/index.html) 11 20.07.2016
JPA concepts @Entity @Table(name = MY_ENTITY") public class MyEntity{ } ORM = Objekt-relationales Mapping Einfache POJOs mit Annotationen @Id @Column(name = "pk") private int id; //... @PersistenceContext(unitName= MyPersistenceUnit") private EntityManager em; 12 20.07.2016
Code! Bottom-Up! 13 20.07.2016
Features Transparentes ORM Vordefinierte Abfragen und Criteria API Relationen (1:1, 1:n, n:m) Vererbung (mehrere Strategien) Lazy Loading & Eager Fetch JPA ist DER Standard in Java für Persistenz mit einer relationalen Datenbank. Es existieren mehrere unabhängige Implementierungen. JPA ist Teil von JEE. JPA ist eine technische Möglichkeit im Rahmen von Oracle ADF. 14 20.07.2016
Typische Probleme & Lösungen Datenbank Performance Zu große Objekte Zu viele Queries Lazy 1+n Problem Zu große Persistence-Sessions Dirty-Erkennung Index & Abbildung der Tabellen Lazy Fetch Eeager Fetch Join Fetch flush() & clear() 15 20.07.2016
EJB & CDI 16 20.07.2016
Java EE 7 (http://www.oracle.com/technetwork/java/javaee/tech/index.html) 17 20.07.2016
EJB & CDI der transaktionale Klebstoff Enterprise Java Beans @Stateless public class GeoService { @PersistenceContext EntityManager em; } public List<Activity> listactivities() { } 18 20.07.2016
EJB & CDI der transaktionale Klebstoff Contexts and Dependency Injection @Inject HelloService hello; 19 20.07.2016
Features CDI @Inject Producer Events Testbarkeit, Unabhängigkeit Contexts: siehe JSF EJB Transaktionen Security Pooling (Throttling) Monitoring Asynchronität Teil von Oracle ADF. 20 20.07.2016
Code! Bilder: eclipse.org 21 20.07.2016
JAX-RS 22 20.07.2016
Java EE 7 (http://www.oracle.com/technetwork/java/javaee/tech/index.html) 23 20.07.2016
Java API for RESTful Services (kein X) RESTful endpoints für Java Representational State Transfer (REST) Principles Addressable Resources Uniform Interface Representation-oriented Stateless 24 20.07.2016
JAX-RS Hello World! JAX-RS Application als Wurzel der REST-API @ApplicationPath("rs") public class DemoApplication extends Application { } Konkrete Klasse als Endpunkt @Path("demo") public class DemoResource { @GET public String test() { } } 25 20.07.2016
Code! Bilder: eclipse.org 26 20.07.2016
JavaScript Single-Page-Anwendung Clientside MV* Complete presentation logic handled in browser Dependency Injection 2-way Data binding Flexible View Templating Controllers and Services Directives Request routing Bilder: angularjs.org 27 20.07.2016
Single Page UIs 28 20.07.2016
Java Server Faces 29 20.07.2016
Java EE 7 (http://www.oracle.com/technetwork/java/javaee/tech/index.html) 30 20.07.2016
Java Server Faces Basiert auf Java und CDI mit xhtml Komponenten-orientiert Validierung Transformation Data binding CDI scopes: Request, Page, Conversation, Session, Application JSF ist der Standard hinter Oracle ADF Faces. 31 20.07.2016
Code! Bilder: eclipse.org 34 20.07.2016
JSF aber schön Geht JSF auch in schön? Ja! mit Komponentenbiliotheken z.b. http://www.primefaces.org/showcase/ BEST Practice: UI-Workshop mit Fachbereich auf Basis Showcase 35 20.07.2016
Welche Technologie? Abhängig von Nutzerzahl & Skalierbarkeit (Zustand auf dem Server) Definierbare Größe -> JSF Skalierbarkeit -> JavaScript+REST Rapid Development: JSF Sicherheit: JSF UI-Team: Java & HTML -> JSF JavaScript & HTML & CSS -> JavaScript+REST 36 20.07.2016
Fragen und Antworten Thomas Bröll Principal Consultant Tel. +49 711 903 632 305 thomas.broell@trivadis.com 37 20.07.2016