SlideShare ist ein Scribd-Unternehmen logo
Jakarta EE 10: Ein erster Blick auf Eclipse
JNoSQL
Expertenkreis Java - 28.04.2022
Markus Pauer, GEDOPLAN GmbH
Markus Pauer
Seit 20 Jahren in der Java Enterprise-Entwicklung
Jakarta EE Full-Stack-Entwickler
IT-Consultant, Trainer
➢ Einsatz von Prozessmodellen und regelbasierten
Entscheidungen in der Anwendungsentwicklung
➢ Komponentenorientierte Entwicklung
➢ Persistenzmodelle
Einsatz einer NoSQL-Datenbank
Welche Vorteile bringt mir der Einsatz einer NoSQL-Datenbank?
Welche NoSQL-Datenbank soll eingesetzt werden?
Welche Struktur haben meine Daten?
Erlernen einer neuen API für den Zugriff
Es droht DB-Vendor-Lockin
Jakarta NoSQL
Eine API für jeden NoSQL-Datenbank-Typ
Convention Over Configuration
Einheitliche Annotationen für das Mapping
Angelehnt an die Jakarta Persistence Annotationen
Unterstützung für mehr als 20 NoSQL-Datenbanken
API mit dem Fokus der Simplizität
Kompatible Implementierung: JNoSQL 1.0.0-b3
https://jakarta.ee/specifications/nosql/1.0/
Unterstützte Datenbanken
Quelle: http://www.jnosql.org/docs/supported_dbs.html
NoSQL-Datenbanken
Not-Only-SQL
Datenbanktypen
Key-Value (Redis)
Dokumentenorientiert (CouchDB, MongoDB)
Spaltenbasiert (Cassandra)
Graph (Neo4J)
Architektur
Communication Layer
Einheitliche API für die Kommunikation mit der Datenbank
Vergleichbar zur Java DataBase Connection API (JDBC)
Mapping Layer
Annotationen, CDI und Bean Validation für das einfache
Mapping zwischen Java und der DB
Vergleichbar zu objekt-relationen Frameworks (Hibernate,
Eclipselink)
Annotationen
@Entity
@Id
@Column
@MappedSuperclass
@Embeddable
Bekannt aus Jakarta Persistence (anderes Package)!
Einfache Entity Klasse
@Entity
public class Person {
@Id
private Long id;
@Column
private String name;
…
}
@Entity
public class Order {
@Id
private Long id;
@Column
private List<String> lines;
…
}
{
id: 4711,
name: Markus,
…
}
{
id: 4712,
lines: [ „Line1“, „Line2“ ],
…
}
@Entity
public class Person {
@Id
private Long id;
…
@Column
private Address address;
…
}
Eingebettete Entity Klasse
@Embeddable
public class Address {
@Column
private String street;
@Column
private String city;
…
}
{
id: 4711,
…
address: {
street: „Hubertusweg“,
city: „Bielefeld“,
…
}
…
}
Weitere Möglichkeiten
@MappedSuperclass
@Convert
@Entity
public class PersonConverter
implements AttributeConverter<Person, String> {
@Override
public String convertToDatabaseColumn(Person attribute) {
return attribute.toString();
}
@Override
public Person convertToEntityAttribute(String dbData) {
return Person.parse(dbData);
}
}
Template Klassen
Nutzung von Template Klassen für die Basis DB-Funktionalitäten
@ApplicationScoped
public class DocumentService {
@Inject
private DocumentTemplate template;
public Person insert(Person person) {
template.insert(person);
}
…
}
@Inject private DocumentTemplate template;
Repositories
Erstellen der Repository Klassen auf Basis eines Interfaces
@ApplicationScoped
public class DocumentService {
@Inject
@Database(DatabaseType.DOCUMENT)
private PersonRepository repository;
public Person save(Person person) {
repository.save(person);
}
…
}
DatabaseType.DOCUMENT
public interface CustomerRepository
extends Repository<Customer, Long> {}
Code
Quelle: http://www.jnosql.org/
Fazit
Mapping Annotationen bekannt von Jakarta Persistence
Automatische Erstellung der Repository Klassen
Basis DB-Funktionalitäten bereits vorhanden
Einheitliche API für den Zugriff auf die unterschiedlichen DB-Typen
Spezifikation noch nicht vollständig
Hat es nicht in Jakarta EE 10 geschafft
https://jakarta.ee/specifications/nosql/
https://github.com/GEDOPLAN/jnosql-demo

Weitere ähnliche Inhalte

Ähnlich wie Jakarta EE 10: Ein erster Blick auf Eclipse JNoSQL

Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus
gedoplan
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core Middlewares
Matthias Jauernig
 
Migration auf die OBIEE - OPITZ CONSULTING - Till Sander
Migration auf die OBIEE - OPITZ CONSULTING - Till SanderMigration auf die OBIEE - OPITZ CONSULTING - Till Sander
Migration auf die OBIEE - OPITZ CONSULTING - Till Sander
OPITZ CONSULTING Deutschland
 
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
Lukas Eder
 
Datenbankzugriff mit der Java Persistence Api
Datenbankzugriff mit der Java Persistence ApiDatenbankzugriff mit der Java Persistence Api
Datenbankzugriff mit der Java Persistence Api
Christian Baranowski
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und Docker
Stefan Oehrli
 
Einführung in ExtJS 4.0
Einführung in ExtJS 4.0Einführung in ExtJS 4.0
Einführung in ExtJS 4.0
marcel_devdude
 
Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)
Dietmar Leher
 
Big Data Konnektivität
Big Data KonnektivitätBig Data Konnektivität
Big Data Konnektivität
Trivadis
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in Rails
Angelo Maron
 
MongoDB für Java Programmierer (JUGKA, 11.12.13)
MongoDB für Java Programmierer (JUGKA, 11.12.13)MongoDB für Java Programmierer (JUGKA, 11.12.13)
MongoDB für Java Programmierer (JUGKA, 11.12.13)
Uwe Printz
 
MongoDB für Java-Programmierer
MongoDB für Java-ProgrammiererMongoDB für Java-Programmierer
MongoDB für Java-Programmierer
Uwe Printz
 
Cloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von MetadatenCloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von Metadaten
Magnus Pfeffer
 
DSpace as publication platform
DSpace as publication platformDSpace as publication platform
DSpace as publication platform
redsys
 
DB-Schema-Evolution mit LiquiBase
DB-Schema-Evolution mit LiquiBaseDB-Schema-Evolution mit LiquiBase
DB-Schema-Evolution mit LiquiBase
gedoplan
 
MicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit QuarkusMicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit Quarkus
gedoplan
 
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
Karin Patenge
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
Joachim Baumann
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der Entwickler
Wolfgang Weigend
 

Ähnlich wie Jakarta EE 10: Ein erster Blick auf Eclipse JNoSQL (20)

NoSQL und CouchDB
NoSQL und CouchDBNoSQL und CouchDB
NoSQL und CouchDB
 
Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core Middlewares
 
Migration auf die OBIEE - OPITZ CONSULTING - Till Sander
Migration auf die OBIEE - OPITZ CONSULTING - Till SanderMigration auf die OBIEE - OPITZ CONSULTING - Till Sander
Migration auf die OBIEE - OPITZ CONSULTING - Till Sander
 
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
 
Datenbankzugriff mit der Java Persistence Api
Datenbankzugriff mit der Java Persistence ApiDatenbankzugriff mit der Java Persistence Api
Datenbankzugriff mit der Java Persistence Api
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und Docker
 
Einführung in ExtJS 4.0
Einführung in ExtJS 4.0Einführung in ExtJS 4.0
Einführung in ExtJS 4.0
 
Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)
 
Big Data Konnektivität
Big Data KonnektivitätBig Data Konnektivität
Big Data Konnektivität
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in Rails
 
MongoDB für Java Programmierer (JUGKA, 11.12.13)
MongoDB für Java Programmierer (JUGKA, 11.12.13)MongoDB für Java Programmierer (JUGKA, 11.12.13)
MongoDB für Java Programmierer (JUGKA, 11.12.13)
 
MongoDB für Java-Programmierer
MongoDB für Java-ProgrammiererMongoDB für Java-Programmierer
MongoDB für Java-Programmierer
 
Cloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von MetadatenCloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von Metadaten
 
DSpace as publication platform
DSpace as publication platformDSpace as publication platform
DSpace as publication platform
 
DB-Schema-Evolution mit LiquiBase
DB-Schema-Evolution mit LiquiBaseDB-Schema-Evolution mit LiquiBase
DB-Schema-Evolution mit LiquiBase
 
MicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit QuarkusMicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit Quarkus
 
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der Entwickler
 

Jakarta EE 10: Ein erster Blick auf Eclipse JNoSQL

  • 1. Jakarta EE 10: Ein erster Blick auf Eclipse JNoSQL Expertenkreis Java - 28.04.2022 Markus Pauer, GEDOPLAN GmbH
  • 2. Markus Pauer Seit 20 Jahren in der Java Enterprise-Entwicklung Jakarta EE Full-Stack-Entwickler IT-Consultant, Trainer ➢ Einsatz von Prozessmodellen und regelbasierten Entscheidungen in der Anwendungsentwicklung ➢ Komponentenorientierte Entwicklung ➢ Persistenzmodelle
  • 3. Einsatz einer NoSQL-Datenbank Welche Vorteile bringt mir der Einsatz einer NoSQL-Datenbank? Welche NoSQL-Datenbank soll eingesetzt werden? Welche Struktur haben meine Daten? Erlernen einer neuen API für den Zugriff Es droht DB-Vendor-Lockin
  • 4. Jakarta NoSQL Eine API für jeden NoSQL-Datenbank-Typ Convention Over Configuration Einheitliche Annotationen für das Mapping Angelehnt an die Jakarta Persistence Annotationen Unterstützung für mehr als 20 NoSQL-Datenbanken API mit dem Fokus der Simplizität Kompatible Implementierung: JNoSQL 1.0.0-b3 https://jakarta.ee/specifications/nosql/1.0/
  • 7. Architektur Communication Layer Einheitliche API für die Kommunikation mit der Datenbank Vergleichbar zur Java DataBase Connection API (JDBC) Mapping Layer Annotationen, CDI und Bean Validation für das einfache Mapping zwischen Java und der DB Vergleichbar zu objekt-relationen Frameworks (Hibernate, Eclipselink)
  • 9. Einfache Entity Klasse @Entity public class Person { @Id private Long id; @Column private String name; … } @Entity public class Order { @Id private Long id; @Column private List<String> lines; … } { id: 4711, name: Markus, … } { id: 4712, lines: [ „Line1“, „Line2“ ], … }
  • 10. @Entity public class Person { @Id private Long id; … @Column private Address address; … } Eingebettete Entity Klasse @Embeddable public class Address { @Column private String street; @Column private String city; … } { id: 4711, … address: { street: „Hubertusweg“, city: „Bielefeld“, … } … }
  • 11. Weitere Möglichkeiten @MappedSuperclass @Convert @Entity public class PersonConverter implements AttributeConverter<Person, String> { @Override public String convertToDatabaseColumn(Person attribute) { return attribute.toString(); } @Override public Person convertToEntityAttribute(String dbData) { return Person.parse(dbData); } }
  • 12. Template Klassen Nutzung von Template Klassen für die Basis DB-Funktionalitäten @ApplicationScoped public class DocumentService { @Inject private DocumentTemplate template; public Person insert(Person person) { template.insert(person); } … } @Inject private DocumentTemplate template;
  • 13. Repositories Erstellen der Repository Klassen auf Basis eines Interfaces @ApplicationScoped public class DocumentService { @Inject @Database(DatabaseType.DOCUMENT) private PersonRepository repository; public Person save(Person person) { repository.save(person); } … } DatabaseType.DOCUMENT public interface CustomerRepository extends Repository<Customer, Long> {}
  • 15. Fazit Mapping Annotationen bekannt von Jakarta Persistence Automatische Erstellung der Repository Klassen Basis DB-Funktionalitäten bereits vorhanden Einheitliche API für den Zugriff auf die unterschiedlichen DB-Typen Spezifikation noch nicht vollständig Hat es nicht in Jakarta EE 10 geschafft https://jakarta.ee/specifications/nosql/ https://github.com/GEDOPLAN/jnosql-demo