Praktikum Enterprise Computing - Exam.pdf

Praktikum Enterprise Computing - Exam
Praktikum Enterprise Computing - Exam Aufgabe 1) In einem großen produzierenden Unternehmen sollen die Geschäftsprozesse durch den Einsatz von Enterprise Computing optimiert werden. Hierfür wird eine Kombination aus ERP-Systemen, CRM-Systemen, Datenbanken und Cloud-Diensten verwendet. Die Unternehmensbereiche, die von diesen Technologien profitieren sollen, umfassen Verwaltung, Buchhaltung, Person...

© StudySmarter 2024, all rights reserved.

Praktikum Enterprise Computing - Exam

Aufgabe 1)

In einem großen produzierenden Unternehmen sollen die Geschäftsprozesse durch den Einsatz von Enterprise Computing optimiert werden. Hierfür wird eine Kombination aus ERP-Systemen, CRM-Systemen, Datenbanken und Cloud-Diensten verwendet. Die Unternehmensbereiche, die von diesen Technologien profitieren sollen, umfassen Verwaltung, Buchhaltung, Personalwesen und Produktion. Ziel ist es, die Effizienz dieser Unternehmensbereiche zu steigern und eine hohe Skalierbarkeit, Verfügbarkeit und Sicherheit der Systeme zu gewährleisten.

a)

1. Analyse und Planung: Beschreibe ausführlich, welche potentiellen Vorteile ein produzierendes Unternehmen durch die Einführung eines ERP-Systems in der Produktion und Verwaltung erzielen kann. Berücksichtige in Deiner Antwort Aspekte wie Effizienzsteigerung, Optimierung der Geschäftsprozesse sowie Skalierbarkeit und Sicherheit. Gehe dabei auch darauf ein, wie das Wechselspiel zwischen ERP-Systemen und anderen Technologien wie CRM-Systemen und Datenbanken aussehen könnte.

Lösung:

Die Einführung eines ERP-Systems (Enterprise Resource Planning) kann einem produzierenden Unternehmen zahlreiche Vorteile bringen, insbesondere in den Bereichen Produktion und Verwaltung. Im Folgenden werden die wichtigsten Vorteile sowie das Zusammenspiel zwischen ERP-Systemen und anderen Technologien wie CRM-Systemen (Customer Relationship Management) und Datenbanken ausführlich beschrieben:

  • Effizienzsteigerung: Ein ERP-System integriert verschiedene Geschäftsprozesse und Datenströme in einer zentralen Plattform. Dies reduziert die Notwendigkeit für manuelle Datenübertragungen und minimiert Fehler. Mitarbeiter haben schnellen Zugriff auf aktuelle und konsistente Daten, was die Entscheidungsfindung beschleunigt und die Produktivität erhöht.
  • Optimierung der Geschäftsprozesse: Durch die Automatisierung und Standardisierung von Prozessen kann das Unternehmen seine Geschäftsabläufe straffen. Arbeitsabläufe in der Produktion werden optimiert, wodurch Durchlaufzeiten verkürzt und Kosten gesenkt werden. In der Verwaltung helfen automatisierte Prozesse, den Verwaltungsaufwand zu reduzieren und Ressourcen effizienter zu nutzen.
  • Skalierbarkeit: ERP-Systeme sind modular aufgebaut und lassen sich an die Bedürfnisse eines wachsenden Unternehmens anpassen. Neue Module und Funktionen können hinzugefügt werden, ohne die bestehende Infrastruktur zu beeinträchtigen. Dies ermöglicht es dem Unternehmen, schnell auf Marktveränderungen zu reagieren und seine Geschäftsprozesse entsprechend zu skalieren.
  • Sicherheit: Moderne ERP-Systeme bieten robuste Sicherheitsfunktionen zum Schutz sensibler Unternehmensdaten. Dazu gehören Zugriffsmanagement, Datenverschlüsselung und regelmäßige Sicherheitspatches. Durch die Zentralisierung der Daten kann eine einheitliche Sicherheitsstrategie implementiert werden, die das Risiko von Datenverlusten und -lecks minimiert.

Das Wechselspiel zwischen ERP-Systemen und anderen Technologien wie CRM-Systemen und Datenbanken ist ebenfalls von großer Bedeutung:

  • Integration von ERP und CRM: Die Integration von ERP- und CRM-Systemen ermöglicht eine nahtlose Datenübertragung zwischen Produktions- und Vertriebsabteilungen. Beispielsweise können Verkaufsdaten aus dem CRM-System direkt in das ERP-System einfließen, um die Produktionsplanung zu optimieren. Dies führt zu einer besseren Abstimmung zwischen Produktion und Vertrieb und einer höheren Kundenzufriedenheit.
  • Nutzung von Datenbanken: Datenbanken spielen eine zentrale Rolle bei der Verwaltung und Speicherung der in ERP- und CRM-Systemen generierten Daten. Eine gut strukturierte Datenbank ermöglicht den schnellen Zugriff auf wichtige Informationen und unterstützt Business Intelligence (BI)-Funktionen wie Berichterstattung und Datenanalyse. Dies hilft dem Unternehmen, fundierte Entscheidungen zu treffen und seine Geschäftsstrategien kontinuierlich zu verbessern.
  • Cloud-Dienste: Die Nutzung von Cloud-Diensten für ERP-Systeme bietet zusätzliche Vorteile wie höhere Verfügbarkeit und Flexibilität. Cloud-basierte ERP-Lösungen ermöglichen es dem Unternehmen, von überall auf seine Systeme zuzugreifen und die IT-Infrastrukturkosten zu reduzieren. Zudem bieten Cloud-Dienste automatische Software-Updates und Datensicherungen, was die IT-Abteilung entlastet und die Betriebssicherheit erhöht.

Insgesamt führt die Einführung eines ERP-Systems in einem produzierenden Unternehmen zu erheblichen Effizienzgewinnen, optimierten Geschäftsprozessen und einer verbesserten Skalierbarkeit und Sicherheit. Die enge Integration mit anderen Technologien wie CRM-Systemen, Datenbanken und Cloud-Diensten verstärkt diese Vorteile und trägt wesentlich zum Erfolg des Unternehmens bei.

b)

2. Praktische Implementierung und Integration: Eine Cloud-basierte Datenbank wird zur Speicherung von Produktions- und Personaldaten genutzt. Erkläre, welche Vorteile und Herausforderungen die Cloud-Nutzung in diesem Kontext mit sich bringen kann. Erstelle zudem ein Konzept, wie die Datenbank mit dem vorhandenen ERP-System und den genutzten CRM-Systemen integriert werden könnte. Skizziere dabei die nötigen Sicherheitsmechanismen, die gewährleisten, dass die Datenintegrität und Verfügbarkeit sichergestellt sind.

Lösung:

Vorteile und Herausforderungen der Cloud-Nutzung

Die Nutzung einer Cloud-basierten Datenbank zur Speicherung von Produktions- und Personaldaten in einem großen produzierenden Unternehmen bietet diverse Vorteile, bringt jedoch auch Herausforderungen mit sich. Im Folgenden werden diese ausführlich beschrieben:

  • Vorteile:
    • Skalierbarkeit: Cloud-Datenbanken ermöglichen eine einfache und flexible Skalierung nach Bedarf. Das Unternehmen kann problemlos zusätzliche Ressourcen hinzubuchen, um steigende Datenmengen zu bewältigen.
    • Kosteneffizienz: Durch die Nutzung von Cloud-Diensten entfallen hohe Investitionskosten für eigene Hardware. Stattdessen zahlt das Unternehmen nutzungsabhängige Gebühren.
    • Zugänglichkeit: Mitarbeiter können weltweit und zu jeder Zeit auf die Datenbank zugreifen, was besonders in einer globalisierten Produktionsumgebung von Vorteil ist.
    • Sicherheitsupdates und Wartung: Der Cloud-Anbieter übernimmt regelmäßig Sicherheitsupdates und Wartungsaufgaben, wodurch die IT-Abteilung des Unternehmens entlastet wird.
    • Disaster Recovery: Cloud-Dienste bieten in der Regel robuste Disaster-Recovery-Lösungen, die eine schnelle Wiederherstellung der Daten im Falle eines Ausfalls gewährleisten.
  • Herausforderungen:
    • Datensicherheit: Bei der Speicherung sensibler Produktions- und Personaldaten in der Cloud müssen strenge Sicherheitsvorkehrungen getroffen werden, um unbefugten Zugriff zu verhindern.
    • Compliance: Das Unternehmen muss sicherstellen, dass die Nutzung der Cloud-Datenbank den geltenden Vorschriften und Standards entspricht. Dies kann insbesondere bei der Verarbeitung von Personaldaten herausfordernd sein.
    • Datenintegration: Die Integration der Cloud-Datenbank mit bestehenden Systemen wie ERP und CRM kann technologische und organisatorische Herausforderungen mit sich bringen.
    • Abhängigkeit vom Anbieter: Das Unternehmen ist vom Cloud-Anbieter abhängig und muss darauf vertrauen, dass dieser zuverlässige Dienste und Support bietet.

Konzept zur Integration der Datenbank mit ERP- und CRM-Systemen

Für die Integration der Cloud-basierten Datenbank mit dem vorhandenen ERP-System und den genutzten CRM-Systemen ist ein durchdachtes Konzept erforderlich. Das Konzept sollte folgende Schritte und Sicherheitsmechanismen umfassen:

  1. Schnittstellen und APIs: Nutzung standardisierter Schnittstellen (APIs), um die Kommunikation zwischen der Cloud-Datenbank und den ERP- sowie CRM-Systemen zu ermöglichen. Dies gewährleistet eine nahtlose Datenübertragung und Integration.
  2. Datensynchronisation: Einrichtung eines Echtzeit-Datensynchronisationsprozesses, um sicherzustellen, dass Änderungen in einem System automatisch in den anderen Systemen aktualisiert werden. Dies verhindert Dateninkonsistenzen und verbessert die Datenintegrität.
  3. Datenverschlüsselung: Alle Daten, die zwischen den Systemen übertragen werden, sollten mittels starker Verschlüsselung (z.B. AES-256) geschützt werden. Dies gilt sowohl für die gespeicherten Daten (At-Rest) als auch für die übertragenen Daten (In-Transit).
  4. Zugriffskontrollen: Implementierung eines strikten Zugriffsmanagements, um sicherzustellen, dass nur autorisierte Benutzer auf sensible Daten zugreifen können. Rolle-basierte Zugriffskontrollen (RBAC) sollten verwendet werden, um die Datenzugriffsebene basierend auf den Benutzerrollen zu definieren.
  5. Audit und Monitoring: Einrichtung eines umfassenden Audit- und Monitoring-Systems, um alle Zugriffe und Aktivitäten in der Datenbank zu überwachen. Dies hilft, verdächtige Aktivitäten zu identifizieren und zeitnah entsprechende Maßnahmen zu ergreifen.
  6. Backup und Wiederherstellung: Regelmäßige Backups der Datenbank sollten durchgeführt und sicher an verschiedenen Standorten gespeichert werden. Ein detaillierter Wiederherstellungsplan (Disaster Recovery Plan) sollte vorhanden sein und regelmäßig getestet werden.

Durch diese Sicherheitsmaßnahmen und Integrationsschritte kann gewährleistet werden, dass die Cloud-basierte Datenbank nahtlos mit dem ERP-System und den CRM-Systemen des Unternehmens funktioniert und dabei die Datenintegrität und Verfügbarkeit sichergestellt sind.

Aufgabe 2)

Du arbeitest für ein Unternehmen, das eine große Datenbanklösung entwickeln muss, um die Anforderungen seines wachsenden Geschäfts zu erfüllen. Nach eingehender Beratung steht die Wahl zwischen einer relationalen (SQL) und einer NoSQL-Datenbank. Um eine fundierte Entscheidung zu treffen, musst Du die Vor- und Nachteile beider Ansätze analysieren und dabei verschiedene Aspekte berücksichtigen. Stelle Dir vor, dass Du diese Informationen dem Management präsentieren musst.

a)

Vergleiche die Struktur von relationalen und NoSQL-Datenbanken im Kontext der Datenbankentwicklung. Erkläre, wie sich die verschiedenartigen Strukturierungsansätze auf die Flexibilität und die Entwicklungszeit auswirken können. Gehe darauf ein, welche Art von Datenbank für ein Unternehmen besser geeignet ist, das oft mit Änderungen in der Datenstruktur konfrontiert ist.

Lösung:

Vergleich der Struktur von relationalen und NoSQL-Datenbanken

In der modernen Datenbankentwicklung gibt es zwei Hauptansätze: Relationale (SQL) Datenbanken und NoSQL-Datenbanken. Jeder dieser Ansätze hat seine eigenen strukturellen Merkmale, die die Flexibilität und Entwicklungszeit beeinflussen.

  • Relationale (SQL) Datenbanken:
    • Struktur: Relationale Datenbanken verwenden ein tabellenbasiertes Schema. Daten werden in Zeilen und Spalten organisiert, wobei jede Tabelle durch eine vordefinierte Struktur (Schema) beschrieben wird. Beziehungen zwischen Tabellen werden durch Primär- und Fremdschlüssel definiert.
    • Flexibilität: Die starre Struktur von relationalen Datenbanken bietet Konsistenz und Integrität, erfordert jedoch bei Änderungen der Datenstruktur oft umfassende Migrationen und Anpassungen des Schemas. Dies kann zu höheren Entwicklungszeiten führen.
    • Entwicklungszeit: Die initiale Entwicklung kann aufgrund des notwendigen Schemas und des Datenmodells länger dauern. Änderungen sind oft aufwendig und zeitintensiv.
  • NoSQL-Datenbanken:
    • Struktur: NoSQL-Datenbanken verwenden flexible Schemata. Daten können in verschiedenen Formaten wie Dokumenten, Schlüssel-Wert-Paaren, Weitspaltigen oder Graphen abgelegt werden. Dies ermöglicht das Speichern unterschiedlich strukturierter Daten in einer einzigen Datenbank.
    • Flexibilität: Die flexible Struktur von NoSQL-Datenbanken erlaubt schnelle Anpassungen und Änderungen der Datenstruktur ohne umfassende Migrationen. Dies macht sie besonders geeignet für Anwendungen mit häufigen oder unvorhersehbaren Änderungen.
    • Entwicklungszeit: Die initiale Entwicklungszeit kann schneller sein, da kein festes Schema erforderlich ist. Änderungen in der Datenstruktur können einfacher und schneller umgesetzt werden.

Geeignete Datenbank für ein Unternehmen mit häufigen Änderungen in der Datenstruktur

Für ein Unternehmen, das oft mit Änderungen in der Datenstruktur konfrontiert ist, bietet eine NoSQL-Datenbank einige entscheidende Vorteile:

  • NoSQL-Datenbanken bieten eine höhere Flexibilität aufgrund des schemalosen oder schemalosen Ansatzes, der es ermöglicht, Daten schnell und ohne aufwändige Migrationen anzupassen.
  • Die Entwicklungszeit kann kürzer sein, da Änderungen ohne umfangreiche Planung und Durchführung erfolgen können.
  • Für Anwendungen mit variablen oder ständig wachsenden Datenmodellen, wie z.B. Social Media Plattformen, E-Commerce-Systeme oder Anwendungen mit umfangreichen Benutzerprofilen, sind NoSQL-Datenbanken oft besser geeignet.

Insgesamt bietet eine NoSQL-Datenbank eine höhere Anpassungsfähigkeit und schnellere Implementierung für Unternehmen mit dynamischen Datenanforderungen.

b)

Erkläre die Konzepte von ACID und BASE im Detail und diskutiere deren Bedeutung im Kontext des Anwendungsbereichs deines Unternehmens. Besonders wichtig ist es zu erläutern, wie die Wahl zwischen diesen Konsistenzmodellen die Performance und Zuverlässigkeit der Anwendungen beeinflussen kann. Verwende dabei konkrete Szenarien, um die Unterschiede zu verdeutlichen, und gib an, welches Modell Du empfehlen würdest.

Lösung:

Konzepte von ACID und BASE im Detail

In der Datenbanktheorie gibt es zwei grundlegende Konsistenzmodelle: ACID und BASE, die jeweils unterschiedliche Ansätze zur Handhabung von Transaktionen und Datenkonsistenz darstellen.

ACID-Prinzipien

ACID steht für Atomicity, Consistency, Isolation und Durability. Diese Prinzipien sind grundlegende Eigenschaften von Transaktionen in relationalen Datenbanken:

  • Atomicity (Atomarität): Eine Transaktion ist unteilbar und wird entweder vollständig durchgeführt oder gar nicht. Dadurch wird sichergestellt, dass Teilergebnisse von Transaktionen nicht in die Datenbank gelangen.
  • Consistency (Konsistenz): Nach Abschluss einer Transaktion muss die Datenbank von einem konsistenten Zustand in einen anderen überführt werden, wobei alle definierten Regeln und Einschränkungen eingehalten werden.
  • Isolation (Isolation): Parallel ablaufende Transaktionen dürfen sich nicht gegenseitig beeinflussen. Jede Transaktion wird so behandelt, als ob sie die einzige ist, die auf die Datenbank zugreift.
  • Durability (Dauerhaftigkeit): Nach Abschluss einer Transaktion bleiben ihre Ergebnisse auch im Falle eines Systemausfalls gespeichert.

BASE-Prinzipien

BASE steht für Basically Available, Soft state und Eventual consistency. Dieses Modell wird oft in NoSQL-Datenbanken verwendet und ist flexibler, aber weniger streng als das ACID-Modell:

  • Basically Available (Grundsätzlich verfügbar): Das System garantiert die Verfügbarkeit der Daten, auch wenn nicht alle Transaktionen sofort abgeschlossen sind.
  • Soft state (Weicher Zustand): Der Zustand des Systems kann sich über die Zeit verändern, selbst ohne Input von neuen Transaktionen. Dies bedeutet, dass Daten inkonsistent sein können.
  • Eventual consistency (Letztendlich konsistent): Das System wird letztendlich einen konsistenten Zustand erreichen, obwohl zu einem bestimmten Zeitpunkt Inkonsistenzen existieren können.

Bedeutung im Kontext des Anwendungsbereichs des Unternehmens

Die Wahl zwischen ACID und BASE hat erhebliche Auswirkungen auf die Performance und Zuverlässigkeit der Anwendungen. Lassen Sie uns dies anhand konkreter Szenarien verdeutlichen:

  • ACID im E-Commerce: Stellen Sie sich ein Online-Shop-System vor, in dem Kunden Bestellungen aufgeben und bezahlen. In solchen Szenarien ist es entscheidend, dass Transaktionen atomar und konsistent ablaufen. Beispielsweise sollte eine Bestellung nur dann als erfolgreich gelten, wenn sowohl die Zahlung als auch die Lagerbestände korrekt verarbeitet wurden. Ein Verlust von Teilergebnissen könnte zu falschen Beständen oder unbezahlten Bestellungen führen. In diesem Fall wäre eine relationale Datenbank mit ACID-Eigenschaften ideal, um solche kritischen Operationen sicher und konsistent durchzuführen.
  • BASE im sozialen Netzwerk: Betrachten wir eine Social-Media-Plattform, auf der Benutzer Beiträge posten und mit anderen interagieren. In solchen Szenarien ist es weniger kritisch, dass alle Daten sofort konsistent sind. Beispielsweise könnte das „Gefällt mir“-Zählen von Beiträgen leicht verzögert werden, ohne dass die Benutzererfahrung stark beeinträchtigt wird. Eine NoSQL-Datenbank mit BASE-Eigenschaften kann hier die nötige Flexibilität und Verfügbarkeit bieten, die zur Skalierung solcher Anwendungen erforderlich ist.

Empfohlene Wahl

Für ein Unternehmen, das eine hohe Datenintegrität und Konsistenz benötigt, insbesondere bei finanziellen Transaktionen oder kritischen Operationen, ist eine relationale Datenbank mit ACID-Eigenschaften zu empfehlen. Dies sorgt für Verlässlichkeit und Datenkonsistenz, auch wenn die Performance etwas beeinträchtigt wird.

Für Anwendungen, die eine hohe Verfügbarkeit und Skalierbarkeit erfordern und bei denen vorübergehende Inkonsistenzen tolerierbar sind, wie z.B. Social-Media-Anwendungen oder große Content-Management-Systeme, wäre eine NoSQL-Datenbank mit BASE-Eigenschaften besser geeignet. Dies bietet die notwendige Flexibilität und ermöglicht schnellere Reaktionszeiten auf Änderungen.

Insgesamt hängt die Wahl zwischen ACID und BASE von den spezifischen Anforderungen und Prioritäten des Unternehmens ab.

Aufgabe 3)

Du bist als Java-Entwickler in einem mittelständischen Unternehmen tätig, das eine Unternehmensanwendung entwickelt, die sowohl interne Geschäftsprozesse wie auch Interaktionen mit Kunden abdeckt. Die Anwendung soll dabei skalierbar, wartbar und sicher sein. Um diese Anforderungen zu erfüllen, wurden folgende Technologien ausgewählt: JEE für serverseitige Anwendungen, das Spring Framework für Dependency Injection und Aspektorientierte Programmierung, Hibernate als ORM-Tool für den Datenbankzugriff, REST/SOAP Webservices für die externe Kommunikation, Servlets und JSP für Webfrontends sowie JUnit für automatisierte Tests. Bereite eine Machbarkeitsstudie vor und präsentiere ein kurzes Proof-of-Concept (PoC) Szenario und Implementation.

a)

Erkläre die Rolle und Vorteile von Spring für Dependency Injection und Aspektorientierte Programmierung (AoP) in Unternehmensanwendungen. Entwerfe ein kleines Beispiel (Code) für die Integration von Spring in eine Java-Anwendung zur Verwaltung von Kundeninformationen. Modelliere die Kundenklasse, das Kunden-Repository und den Kunden-Service und zeige, wie Spring diese Komponenten miteinander verbindet. Schreibe außerdem einen JUnit-Test, der die Funktionalität der Anwendung überprüft.

Lösung:

Rolle und Vorteile von Spring für Dependency Injection und Aspektorientierte Programmierung (AoP) in Unternehmensanwendungen:

  • Dependency Injection (DI): DI erleichtert die Entkopplung von Komponenten, wodurch der Code besser testbar und wartbar wird. Spring bietet eine flexible und leistungsstarke Plattform für DI, die die manuelle Verwaltung von Abhängigkeiten überflüssig macht.
  • Aspektorientierte Programmierung (AoP): AoP ermöglicht die Trennung von Geschäftslogik und systemübergreifender Aufgaben wie Logging, Sicherheitsaspekte oder Transaktionsmanagement. Spring bietet eine starke Integration von AoP, wodurch sich diese Aspekte zentral und konsistent verwalten lassen.
Beispiel für die Integration von Spring in eine Java-Anwendung zur Verwaltung von Kundeninformationen:
'code :-   org.springframework.boot spring-boot-starter-data-jpa   org.springframework.boot spring-boot-starter-web   com.h2database h2 runtime   org.springframework.boot spring-boot-starter-test test  '
  • Kundenklasse
    'import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Kunde { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String name; private String email; // Getter und Setter }'
  • Kunden-Repository
    'import org.springframework.data.repository.CrudRepository; public interface KundenRepository extends CrudRepository { }'
  • Kunden-Service
    'import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class KundenService { @Autowired private KundenRepository kundenRepository; public Iterable getAllKunden() { return kundenRepository.findAll(); } public Kunde saveKunde(Kunde kunde) { return kundenRepository.save(kunde); } }'
  • JUnit-Test
    'import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class KundenServiceTests { @Autowired private KundenService kundenService; @Test public void testSaveKunde() { Kunde kunde = new Kunde(); kunde.setName(

    b)

    Unter Verwendung von Hibernate als ORM-Tool, realisiere den Datenbankzugriff für die Kundenverwaltung. Beschreibe die Vorteile von Hibernate im Kontext von Datenbankoperationen in einer Unternehmensanwendung. Implementiere die Kundenklasse als Entity und das Kunden-Repository zur Verwaltung von CRUD-Operationen. Füge Code hinzu, um REST/SOAP-Webservices für die Kommunikation mit externen Anwendungen zu erstellen. Erkläre die Wahl der Technologien und wie sie sicher und skalierbar implementiert werden können.

    Lösung:

    Vorteile von Hibernate im Kontext von Datenbankoperationen in einer Unternehmensanwendung:

    Aufgabe 4)

    Du hast die Verantwortung erhalten, eine neue Java-Webanwendung für einen Online-Shop zu entwickeln. Dabei soll das Spring Boot Framework eingesetzt werden, um die Entwicklung und Konfiguration zu erleichtern. Das Projekt soll unter anderem RESTful APIs enthalten, die mit \texttt{@RestController} annotiert sind, sowie verschiedene Abhängigkeiten, die durch \texttt{spring-boot-starter} gehandhabt werden. Außerdem soll ein eingebetteter Webserver (z.B. Tomcat) verwendet werden, um die Anwendung lokal zu testen und später zu deployen. Dabei soll die Konfiguration auf Basis von \texttt{application.properties} oder \texttt{application.yml} erfolgen.

    a)

    Erste Schritte: Beschreibe die notwendigen Schritte zur Einrichtung eines neuen Spring Boot-Projekts für den Online-Shop. Berücksichtige dabei folgende Aspekte:

    • Projektstruktur und benötigte Dateien
    • Abhängigkeiten, die in der \texttt{pom.xml} bzw. \texttt{build.gradle} hinzugefügt werden müssen
    • Die Konfiguration des eingebetteten Webservers

    Lösung:

    Erste Schritte zur Einrichtung eines neuen Spring Boot-Projekts für den Online-Shop:

    • Projektstruktur und benötigte Dateien:Um ein neues Spring Boot-Projekt für den Online-Shop zu erstellen, kannst Du das Spring Initializr-Tool verwenden, um die Grundstruktur des Projekts zu generieren. Die Projektstruktur sollte folgende Elemente enthalten:
    • src/main/java: Hier werden die Java-Quellcodedateien abgelegt.
    • src/main/resources: Hier werden die Ressourcen wie application.properties oder application.yml abgelegt.
    • src/test/java: Hier werden die Testdateien abgelegt.
    • pom.xml oder build.gradle: Abhängigkeitsmanagementdatei.
    • .gitignore: Datei zum Ignorieren bestimmter Dateien/Verzeichnisse in Git.
    • README.md: Datei für Projektdokumentation.
    • Abhängigkeiten in der pom.xml bzw. build.gradle:Hier sind die grundlegenden Abhängigkeiten, die Du in Deine pom.xml oder build.gradle Datei hinzufügen musst:
    • pom.xml:
    <dependencies>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <!-- Weitere benötigte Abhängigkeiten --></dependencies>
    • build.gradle:
    dependencies {    implementation 'org.springframework.boot:spring-boot-starter-web'    // Weitere benötigte Abhängigkeiten}
    • Konfiguration des eingebetteten Webservers:Die Grundeinstellungen für den eingebetteten Webserver (wie Tomcat) können in der application.properties oder application.yml Datei vorgenommen werden. Du kannst zum Beispiel den Port des Servers konfigurieren:
    • application.properties:
    server.port=8080
    • application.yml:
    server:  port: 8080
    • Damit sind die grundlegenden Schritte zur Einrichtung eines neuen Spring Boot-Projekts abgeschlossen. Du kannst nun mit der Implementierung der RESTful APIs und weiteren Funktionen fortfahren.

    b)

    API-Entwicklung: Implementiere eine einfache RESTful API in deinem Spring Boot-Projekt, die Produktdetails zurückgibt. Die Produktdetails sollen in einer JSON-Struktur gebe. Implementiere außerdem einen GET-Endpunkt, der die Informationen für ein bestimmtes Produkt zurückgibt. Nutze dabei die \texttt{@RestController}-Annotation. Zeige den notwendigen Codeabschnitt, einschließlich der Konfigurationsdateien, die angepasst werden müssen.

     'write your code actual here' 

    Lösung:

    API-Entwicklung: Hier ist ein Schritt-für-Schritt-Beispiel, wie Du eine einfache RESTful API in Deinem Spring Boot-Projekt implementieren kannst, die Produktdetails zurückgibt.

    • Schritt 1: Projektstruktur erstellenDie Datei- und Paketstruktur könnte wie folgt aussehen:
    • src/main/java/com/example/onlineshop/
    • src/main/java/com/example/onlineshop/controller
    • src/main/java/com/example/onlineshop/model
    • Schritt 2: Modellklasse für das Produkt erstellenErstelle eine Klasse Product im Paket model:
    package com.example.onlineshop.model;public class Product {    private Long id;    private String name;    private Double price;    // Konstruktoren    public Product(Long id, String name, Double price) {        this.id = id;        this.name = name;        this.price = price;    }    // Getter und Setter    public Long getId() {        return id;    }    public void setId(Long id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Double getPrice() {        return price;    }    public void setPrice(Double price) {        this.price = price;    }}
    • Schritt 3: REST-Controller erstellenErstelle eine Klasse ProductController im Paket controller:
    package com.example.onlineshop.controller;import com.example.onlineshop.model.Product;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/api/products")public class ProductController {    @GetMapping("/{id}")    public Product getProductById(@PathVariable Long id) {        // Mock-Daten, in einer echten Anwendung sollten die Daten aus einer Datenbank abgerufen werden        return new Product(id, "Produktname", 19.99);    }}
    • Schritt 4: KonfigurationsdateienDu musst sicherstellen, dass der eingebettete Webserver (z.B. Tomcat) korrekt konfiguriert ist. Dies kann in der application.properties oder application.yml Datei erfolgen, falls nicht bereits geschehen:
    • application.properties:
    server.port=8080
    • application.yml:
    server:  port: 8080

    Damit hast Du eine einfache RESTful API erstellt, die Produktdetails in JSON-Struktur zurückgibt. Du kannst die Anwendung starten und den GET-Endpunkt unter http://localhost:8080/api/products/{id} aufrufen, um die Produktinformationen abzurufen.

    c)

    Eigenschaften-Verwaltung: Erkläre, wie du verschiedene Konfigurationseinstellungen wie die Datenbankverbindung oder Server-Port-Nummer in einem Application Properties bzw. YML-File konfigurierst. Gebe ein Beispiel-Konfigurationsfile für eine MySQL-Datenbankverbindung, einschließlich Username und Passwort. Diskutiere außerdem, wie du verschiedene Umgebungen (z.B. Entwicklung, Test, Produktion) mit unterschiedlichen Konfigurationen verwalten kannst.

    • Zuweisung und Formatierung von Konfigurationsparametern
    • Verwendung von Platzhaltern und Umgebungsvariablen

    Lösung:

    Eigenschaften-Verwaltung: In Spring Boot-Anwendungen können verschiedene Konfigurationseinstellungen wie die Datenbankverbindung oder der Server-Port über application.properties oder application.yml konfiguriert werden. Hier wirst Du lernen, wie man diese Dateien verwendet und wie man verschiedene Umgebungen verwaltet.

    • Zuweisung und Formatierung von Konfigurationsparametern:Die Konfigurationseinstellungen können einfach in application.properties zugewiesen werden. Beispielsweise sieht eine Konfiguration für eine MySQL-Datenbankverbindung folgendermaßen aus:
    • application.properties:
    server.port=8080spring.datasource.url=jdbc:mysql://localhost:3306/onlineshopspring.datasource.username=myuserspring.datasource.password=mypasswordspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.jpa.hibernate.ddl-auto=updatespring.jpa.show-sql=truespring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
    • In application.yml sieht dies wie folgt aus:
    server:  port: 8080spring:  datasource:    url: jdbc:mysql://localhost:3306/onlineshop    username: myuser    password: mypassword    driver-class-name: com.mysql.cj.jdbc.Driver  jpa:    hibernate:      ddl-auto: update    show-sql: true    properties:      hibernate.dialect: org.hibernate.dialect.MySQL5Dialect
    • Verwendung von Platzhaltern und Umgebungsvariablen:Bei der Konfiguration kann es nützlich sein, Platzhalter oder Umgebungsvariablen zu verwenden, um empfindliche Informationen wie Benutzernamen und Passwörter nicht direkt im Code zu speichern. So kann man zum Beispiel Umgebungsvariablen verwenden:
    spring.datasource.username=${DB_USERNAME}spring.datasource.password=${DB_PASSWORD}
    • Der Wert für DB_USERNAME und DB_PASSWORD kann dann in der Umgebung gesetzt werden, aus der die Anwendung gestartet wird.
    • Verwaltung von verschiedenen Umgebungen (Entwicklung, Test, Produktion):Spring Boot unterstützt das Profilmanagement, mit dem Du unterschiedliche Konfigurationen für verschiedene Umgebungen verwalten kannst. Du kannst zum Beispiel verschiedene application-{profile}.properties oder application-{profile}.yml Dateien erstellen:
    • application-dev.properties:
    server.port=8081spring.datasource.url=jdbc:mysql://localhost:3306/onlineshop_devspring.datasource.username=devuserspring.datasource.password=devpassword
    • application-prod.properties:
    server.port=80spring.datasource.url=jdbc:mysql://prodserver:3306/onlineshopspring.datasource.username=produserspring.datasource.password=prodpassword
    • Aktiviere das gewünschte Profil, indem Du den Parameter spring.profiles.active festlegst:
    spring.profiles.active=dev

    Wenn das spring.profiles.active Property gesetzt wird, lädt Spring Boot die entsprechenden Einstellungen aus der zugehörigen Datei. Zum Beispiel würde es beim Setzen auf dev die Werte aus application-dev.properties laden.

Sign Up

Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

Kostenloses Konto erstellen

Du hast bereits ein Konto? Anmelden