Multitenancy und JPA Eine Bestandsaufnahme

Multitenancy und JPA Multitenancy und JPA — Eine Bestandsaufnahme — Bernd M¨ uller Fakult¨ at Informatik Ostfalia Hochschule Braunschweig/Wolfenb¨ ut...
35 downloads 1 Views 964KB Size
Multitenancy und JPA

Multitenancy und JPA — Eine Bestandsaufnahme — Bernd M¨ uller Fakult¨ at Informatik Ostfalia Hochschule Braunschweig/Wolfenb¨ uttel

DOAG 2011

Bernd M¨ uller, Fakult¨ at Informatik, Ostfalia

, DOAG 2011

1/44

Multitenancy und JPA

Vorstellung Referent I

Studium Informatik, Uni Stuttgart

I

Promotion in Informatik, Uni Oldenburg

I

IBM, HIS

I

Professor f¨ ur Wirtschaftsinformatik, HS Harz

I

Professor f¨ ur Software-Technik, Fakult¨at Informatik, Ostfalia

I

Buchautor (JSF, JPA, Seam, ...)

I

Mitglied JUG Ostfalen

I

GF PMST GmbH

I

...

Bernd M¨ uller, Fakult¨ at Informatik, Ostfalia

, DOAG 2011

2/44

erscheint Fr¨ uhjar 2012 stay tuned

Multitenancy und JPA Motivation und Standortbestimmung

Motivation und Standortbestimmung

Bernd M¨ uller, Fakult¨ at Informatik, Ostfalia

, DOAG 2011

4/44

Multitenancy und JPA Motivation und Standortbestimmung

JSR 342, Java EE 7 The main theme for this release is the Cloud. The Java EE platform is already well suited for cloud environments thanks to its container-based model and the abstraction of resource access it entails. In this release we aim to further enhance the suitability of the Java EE platform for cloud environments. As a result, Java EE 7 products will be able to more easily operate on private or public clouds and deliver their functionality as a service with support for features such as multitenancy and elasticity (horizontal scaling). Applications written for Java EE 7 will be better able to take advantage of the benefits of a cloud environment.

Bernd M¨ uller, Fakult¨ at Informatik, Ostfalia

, DOAG 2011

5/44

JSR 338, JPA 2.1 I

I

I

I

I

I I

I I

I

Support for the use of custom types and transformation methods in object/relational mapping. Support for the specification of immutable attributes and readonly entities. Support for user-configurable naming strategies for use in O/R mapping and metamodel generation. More flexibility in the use of generated values; support for UUID generator type. Additional mapping metadata to provide better standardization for schema generation. Support for multitenancy. Additional event listeners and callback methods; availability of entity manager to callbacks. Methods for dirty detection. Improved ability to control persistence context synchronization. ...

Multitenancy und JPA Motivation und Standortbestimmung

Was ist Multitenancy ? I

Tenant = Mandant, also mehrere Mandanten, Mandantenf¨ahigkeit

I

Kann immer programmatisch realisiert werden

I

Ziel ist jedoch: m¨ oglichst wenig Zusatzaufwand, m¨oglichst deklarativ In Java-EE potentiell betroffen:

I

I I I

Oberfl¨ache (JSF) Anwendungslogik (Session-Beans) Persistenz (JPA)

Bernd M¨ uller, Fakult¨ at Informatik, Ostfalia

, DOAG 2011

7/44

Multitenancy und JPA Motivation und Standortbestimmung

Mandantenf¨ahigkeit und JPA — Alternativen I

Getrennte/separate Datenbanken

I

Getrennte/separate Schemata

I

Gemeinsames Schema

Bernd M¨ uller, Fakult¨ at Informatik, Ostfalia

, DOAG 2011

8/44

Multitenancy und JPA Motivation und Standortbestimmung

Java Community Process I

Mittlerweile sehr o ¨ffentlich (Mailing-Listen, . . . ) Mitarbeit auch f¨ ur Individuen m¨ oglich

I

L¨asst sich durch existierende Systeme motivieren

I

Autor nicht Mitglied in JSR 338 EG, Infos durch eigene Recherchen

I

Mittlerweile 3. Draft JPA 2.1 verf¨ ugbar

I

Bernd M¨ uller, Fakult¨ at Informatik, Ostfalia

, DOAG 2011

9/44

Multitenancy und JPA Motivation und Standortbestimmung

Die Provider I

EclipseLink (RI), verwendet in GlassFish

I

OpenJPA, verwendet in Geronimo, WebSphere

I

Hibernate, verwendet in JBoss-AS

Bernd M¨ uller, Fakult¨ at Informatik, Ostfalia

, DOAG 2011

10/44

Multitenancy und JPA Multitenancy in EclipseLink

Multitenancy in EclipseLink

Bernd M¨ uller, Fakult¨ at Informatik, Ostfalia

, DOAG 2011

11/44

Multitenancy und JPA Multitenancy in EclipseLink

Bernd M¨ uller, Fakult¨ at Informatik, Ostfalia

, DOAG 2011

12/44

Multitenancy und JPA Multitenancy in EclipseLink

Bernd M¨ uller, Fakult¨ at Informatik, Ostfalia

, DOAG 2011

13/44

Multitenancy und JPA Multitenancy in EclipseLink

Bernd M¨ uller, Fakult¨ at Informatik, Ostfalia

, DOAG 2011

14/44

Multitenancy und JPA Multitenancy in EclipseLink

Bernd M¨ uller, Fakult¨ at Informatik, Ostfalia

, DOAG 2011

15/44

Multitenancy und JPA Multitenancy in EclipseLink

Beispiel: Ein Kunde kann mehrere Konten haben ... @Entity @Multitenant public class Kunde { @Id @GeneratedValue private Integer id ; private String vorname ; private String nachname ; @Temporal ( TemporalType . DATE ) private Date geburtsdatum ; @OneToMany ( mappedBy = " kunde " , cascade = CascadeType . ALL ) private List < Konto > konten ; ...

Bernd M¨ uller, Fakult¨ at Informatik, Ostfalia

, DOAG 2011

16/44

Multitenancy und JPA Multitenancy in EclipseLink

Das Konto @Entity @Multitenant public class Konto { @Id @GeneratedValue ( strategy = GenerationType . SEQUENCE , generator = " KontoSeq " ) @Seq ue nc eG en erat or ( name = " KontoSeq " , sequenceName = " KontoSeq " , allocationSize = 5 , initialValue = 1000000) private Integer kontonummer ; private BigDecimal kontostand ; @ManyToOne @JoinColumn ( name = " kunde " ) private Kunde kunde ; ... Bernd M¨ uller, Fakult¨ at Informatik, Ostfalia

, DOAG 2011

17/44

Multitenancy und JPA Multitenancy in EclipseLink

Verwendung: persistence.xml oder programmatisch

Suggest Documents