{"id":576,"date":"2025-01-16T19:40:28","date_gmt":"2025-01-16T18:40:28","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=576"},"modified":"2025-02-25T19:46:17","modified_gmt":"2025-02-25T18:46:17","slug":"einfuehrung-in-jhipster","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=576","title":{"rendered":"Einf\u00fchrung in JHipster"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\">Einleitung<\/h4>\n\n\n\n<p>In der heutigen Softwareentwicklung suchen Entwickler und Unternehmen st\u00e4ndig nach effizienten M\u00f6glichkeiten, robuste und skalierbare Anwendungen zu erstellen. JHipster hat sich als ein beliebtes Framework etabliert, das die Entwicklung von modernen Webanwendungen und Microservices erheblich vereinfacht. In diesem Artikel werden wir die Hauptmerkmale von JHipster, seine Architektur, die Entwicklungsschritte sowie die Vor- und Nachteile eingehend untersuchen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Was ist JHipster?<\/h4>\n\n\n\n<p>JHipster ist ein Entwicklungswerkzeug, das eine Plattform f\u00fcr die Erstellung von Webanwendungen und Microservices bietet. Es kombiniert verschiedene Technologien, darunter Spring Boot, Angular, React und Bootstrap, um eine vollst\u00e4ndige Entwicklungsumgebung bereitzustellen. JHipster erm\u00f6glicht es Entwicklern, in k\u00fcrzester Zeit hochwertige Anwendungen zu generieren, die Best Practices der Softwareentwicklung befolgen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Architektur von JHipster<\/h4>\n\n\n\n<p>Die Architektur von JHipster basiert auf mehreren Schl\u00fcsselkomponenten:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Backend<\/strong>: Das Backend wird in Java mit Spring Boot entwickelt, das f\u00fcr seine einfache Konfiguration und leistungsstarke Funktionalit\u00e4t bekannt ist. Es bietet eine solide Grundlage f\u00fcr die Entwicklung von RESTful Webservices.<\/li>\n\n\n\n<li><strong>Frontend<\/strong>: JHipster unterst\u00fctzt sowohl Angular als auch React f\u00fcr die Frontend-Entwicklung. Entwickler k\u00f6nnen die Technologie ausw\u00e4hlen, die am besten zu ihrem Projekt passt.<\/li>\n\n\n\n<li><strong>Datenbank<\/strong>: JHipster unterst\u00fctzt verschiedene Datenbanken, darunter relationale (z.B. PostgreSQL, MySQL) und NoSQL-Datenbanken (z.B. MongoDB). Es bietet auch die M\u00f6glichkeit, JPA (Java Persistence API) f\u00fcr die Datenzugriffslogik zu verwenden.<\/li>\n\n\n\n<li><strong>Security<\/strong>: Sicherheitsaspekte sind in JHipster integriert. Entwickler k\u00f6nnen zwischen verschiedenen Authentifizierungsmethoden w\u00e4hlen, darunter JWT (JSON Web Tokens) und OAuth 2.0.<\/li>\n\n\n\n<li><strong>Microservices<\/strong>: JHipster unterst\u00fctzt die Erstellung von Microservices und bietet Tools f\u00fcr die Verwaltung von Service-Kommunikation und -Orchestrierung.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Entwicklung mit JHipster<\/h4>\n\n\n\n<p>Die Verwendung von JHipster ist einfach und erm\u00f6glicht es Entwicklern, mit minimalem Aufwand eine funktionierende Anwendung zu erstellen. Die folgenden Schritte sind erforderlich, um ein neues Projekt zu starten:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Installation<\/strong>: Zun\u00e4chst muss Node.js und npm (Node Package Manager) installiert werden. Danach wird JHipster \u00fcber npm global installiert: <code>npm install -g generator-jhipster<\/code><\/li>\n\n\n\n<li><strong>Projektgenerierung<\/strong>: Um ein neues JHipster-Projekt zu generieren, navigieren Sie in das gew\u00fcnschte Verzeichnis und f\u00fchren Sie den folgenden Befehl aus: <code>jhipster<\/code> JHipster f\u00fchrt Sie durch einen interaktiven Prozess, in dem Sie verschiedene Optionen ausw\u00e4hlen k\u00f6nnen, z.B. den gew\u00fcnschten Anwendungsstil (Monolith oder Microservices), die Authentifizierungsmethode und die Datenbank.<\/li>\n\n\n\n<li><strong>Anwendungsentwicklung<\/strong>: Nach der Generierung k\u00f6nnen Entwickler mit der Implementierung ihrer Gesch\u00e4ftslogik beginnen. JHipster erstellt bereits eine grundlegende Struktur, die Model-View-Controller (MVC) Prinzipien befolgt.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Code-Beispiele<\/h4>\n\n\n\n<p>Um ein besseres Verst\u00e4ndnis daf\u00fcr zu bekommen, wie man mit JHipster arbeitet, betrachten wir einige grundlegende Code-Beispiele.<\/p>\n\n\n\n<p><strong>1. Generierung eines neuen Entit\u00e4t:<\/strong><\/p>\n\n\n\n<p>Angenommen, Sie m\u00f6chten eine <code>Product<\/code>-Entit\u00e4t erstellen. Dies kann mit dem folgenden Befehl in der Kommandozeile durchgef\u00fchrt werden:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">jhipster entity Product\n<\/code><\/span><\/pre>\n\n\n<p>Sie werden durch einen Assistenten geleitet, in dem Sie die Eigenschaften der Entit\u00e4t angeben k\u00f6nnen. JHipster generiert den Code f\u00fcr die <code>Product<\/code>-Entit\u00e4t, einschlie\u00dflich der entsprechenden Repository- und Service-Klassen.<\/p>\n\n\n\n<p><strong>2. Beispiel einer <code>Product<\/code>-Entit\u00e4t:<\/strong><\/p>\n\n\n\n<p>Nach der Generierung k\u00f6nnte Ihre <code>Product<\/code>-Entit\u00e4t in Java wie folgt aussehen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">@Entity\n@Table(name = <span class=\"hljs-string\">\"product\"<\/span>)\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Product<\/span> <\/span>{\n\n    @Id\n    @GeneratedValue(strategy = GenerationType.IDENTITY)\n    <span class=\"hljs-keyword\">private<\/span> Long id;\n\n    @NotNull\n    <span class=\"hljs-keyword\">private<\/span> String name;\n\n    <span class=\"hljs-keyword\">private<\/span> String description;\n\n    @NotNull\n    <span class=\"hljs-keyword\">private<\/span> Double price;\n\n    <span class=\"hljs-comment\">\/\/ Getter und Setter<\/span>\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>3. Beispiel f\u00fcr einen REST-Controller:<\/strong><\/p>\n\n\n\n<p>JHipster generiert auch einen REST-Controller f\u00fcr die <code>Product<\/code>-Entit\u00e4t, der wie folgt aussehen k\u00f6nnte:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">@RestController\n@RequestMapping(<span class=\"hljs-string\">\"\/api\"<\/span>)\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ProductResource<\/span> <\/span>{\n\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> ProductService productService;\n\n    <span class=\"hljs-keyword\">public<\/span> ProductResource(ProductService productService) {\n        this.productService = productService;\n    }\n\n    @PostMapping(<span class=\"hljs-string\">\"\/products\"<\/span>)\n    <span class=\"hljs-keyword\">public<\/span> ResponseEntity&lt;Product&gt; createProduct(@RequestBody Product product) {\n        Product result = productService.save(product);\n        <span class=\"hljs-keyword\">return<\/span> ResponseEntity.created(<span class=\"hljs-keyword\">new<\/span> URI(<span class=\"hljs-string\">\"\/api\/products\/\"<\/span> + result.getId()))\n            .body(result);\n    }\n\n    @GetMapping(<span class=\"hljs-string\">\"\/products\"<\/span>)\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">List<\/span>&lt;Product&gt; getAllProducts() {\n        <span class=\"hljs-keyword\">return<\/span> productService.findAll();\n    }\n\n    <span class=\"hljs-comment\">\/\/ Weitere CRUD-Methoden...<\/span>\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>4. Frontend-Komponente in Angular:<\/strong><\/p>\n\n\n\n<p>Wenn Sie Angular als Frontend-Technologie w\u00e4hlen, wird eine Komponente f\u00fcr die Anzeige der Produkte erstellt. Hier ist ein einfaches Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> { Component, OnInit } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'@angular\/core'<\/span>;\n<span class=\"hljs-keyword\">import<\/span> { ProductService } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'app\/entities\/product\/product.service'<\/span>;\n<span class=\"hljs-keyword\">import<\/span> { Product } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'app\/shared\/model\/product.model'<\/span>;\n\n@Component({\n  <span class=\"hljs-attr\">selector<\/span>: <span class=\"hljs-string\">'jhi-product'<\/span>,\n  <span class=\"hljs-attr\">templateUrl<\/span>: <span class=\"hljs-string\">'.\/product.component.html'<\/span>,\n})\n<span class=\"hljs-keyword\">export<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ProductComponent<\/span> <span class=\"hljs-title\">implements<\/span> <span class=\"hljs-title\">OnInit<\/span> <\/span>{\n  <span class=\"hljs-attr\">products<\/span>: Product&#91;];\n\n  <span class=\"hljs-keyword\">constructor<\/span>(private productService: ProductService) {}\n\n  ngOnInit() {\n    <span class=\"hljs-keyword\">this<\/span>.loadAll();\n  }\n\n  loadAll() {\n    <span class=\"hljs-keyword\">this<\/span>.productService.query().subscribe(<span class=\"hljs-function\">(<span class=\"hljs-params\">res<\/span>) =&gt;<\/span> {\n      <span class=\"hljs-keyword\">this<\/span>.products = res.body;\n    });\n  }\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Vor- und Nachteile von JHipster<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Vorteile<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Schnelligkeit<\/strong>: JHipster erm\u00f6glicht eine schnelle Anwendungsentwicklung, da es viele Boilerplate-Codes generiert und Entwicklern so viel Zeit spart.<\/li>\n\n\n\n<li><strong>Flexibilit\u00e4t<\/strong>: Entwickler k\u00f6nnen aus einer Vielzahl von Technologien und Architekturen w\u00e4hlen, die am besten zu ihren Projekten passen.<\/li>\n\n\n\n<li><strong>Modularit\u00e4t<\/strong>: JHipster unterst\u00fctzt die Entwicklung von Microservices, was die Modularit\u00e4t und Skalierbarkeit von Anwendungen f\u00f6rdert.<\/li>\n\n\n\n<li><strong>Community und Support<\/strong>: JHipster hat eine gro\u00dfe und aktive Community, die Unterst\u00fctzung und Ressourcen bereitstellt. Es gibt umfangreiche Dokumentationen, Tutorials und Foren.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Nachteile<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Komplexit\u00e4t<\/strong>: F\u00fcr Neulinge kann die Vielzahl der verf\u00fcgbaren Optionen und Konfigurationen \u00fcberw\u00e4ltigend sein.<\/li>\n\n\n\n<li><strong>Abh\u00e4ngigkeiten<\/strong>: Da JHipster viele externe Bibliotheken und Frameworks verwendet, k\u00f6nnen Probleme mit Kompatibilit\u00e4t und Abh\u00e4ngigkeiten auftreten.<\/li>\n\n\n\n<li><strong>Lernkurve<\/strong>: Obwohl JHipster die Entwicklung beschleunigt, erfordert es dennoch ein gewisses Ma\u00df an Einarbeitung, insbesondere wenn Entwickler mit den verwendeten Technologien nicht vertraut sind.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Fazit<\/h4>\n\n\n\n<p>JHipster ist ein leistungsstarkes Werkzeug, das Entwicklern hilft, moderne Webanwendungen und Microservices effizient zu erstellen. Mit seiner flexiblen Architektur, umfangreichen Funktionen und der Unterst\u00fctzung durch die Community ist es eine ausgezeichnete Wahl f\u00fcr viele Projekte. Trotz einiger Herausforderungen, die mit der Nutzung einhergehen k\u00f6nnen, \u00fcberwiegen die Vorteile, und JHipster bleibt ein wichtiges Werkzeug im Arsenal eines jeden modernen Entwicklers. Die Code-Beispiele verdeutlichen, wie einfach es ist, mit JHipster zu arbeiten und eigene Anwendungen zu entwickeln.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Einleitung In der heutigen Softwareentwicklung suchen Entwickler und Unternehmen st\u00e4ndig nach effizienten M\u00f6glichkeiten, robuste und skalierbare Anwendungen zu erstellen. JHipster hat sich als ein beliebtes Framework etabliert, das die Entwicklung von modernen Webanwendungen und Microservices erheblich vereinfacht. In diesem Artikel werden wir die Hauptmerkmale von JHipster, seine Architektur, die Entwicklungsschritte sowie die Vor- und Nachteile [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-576","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/576","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=576"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/576\/revisions"}],"predecessor-version":[{"id":577,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/576\/revisions\/577"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=576"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=576"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}