{"id":21238,"date":"2023-12-16T18:27:39","date_gmt":"2023-12-16T17:27:39","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=21238"},"modified":"2023-12-16T18:45:09","modified_gmt":"2023-12-16T17:45:09","slug":"neue-java-datenbanke-mit-rest-service-erstellen-eclipsestore-1-0-0","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=21238","title":{"rendered":"Neue Java Datenbanke mit REST-Service erstellen &#8211; EclipseStore 1.0.0"},"content":{"rendered":"<p>Mit ein paar Javazeilen (mind. JDK 11) eine Datenbank mit REST-Service erstellen? Ja das geht in ein paar Minuten. <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/rotatiion-herz.mp4.gif\" alt=\"\" width=\"512\" height=\"288\" class=\"aligncenter size-full wp-image-21239\" \/><\/p>\n<p>Einfach in der pom.xml diese Eintr\u00e4ge:  <!--more--><\/p>\n<pre class=\"minimize:true lang:xhtml decode:true \" >\r\n\r\n&lt;!-- DB --&gt;\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;org.eclipse.store&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;storage-embedded&lt;\/artifactId&gt;\r\n\t\t\t&lt;version&gt;1.0.0&lt;\/version&gt;\r\n\t\t&lt;\/dependency&gt;\r\n\t\t&lt;!-- DB Rest-Service --&gt;\r\n\t\t&lt;dependency&gt;\r\n\t      &lt;groupId&gt;org.eclipse.store&lt;\/groupId&gt;\r\n\t      &lt;artifactId&gt;storage-restservice-sparkjava&lt;\/artifactId&gt;\r\n\t      &lt;version&gt;1.0.0&lt;\/version&gt;\r\n\t   &lt;\/dependency&gt;\r\n\t   &lt;dependency&gt;\r\n\t      &lt;groupId&gt;org.slf4j&lt;\/groupId&gt;\r\n\t      &lt;artifactId&gt;slf4j-simple&lt;\/artifactId&gt;\r\n\t      &lt;version&gt;1.7.32&lt;\/version&gt;\r\n\t   &lt;\/dependency&gt;\r\n\r\n<\/pre>\n<p>und schon kann immer der gesamte Objektgraph gespeichert werden.<\/p>\n<p>Und hier die ganze Java Klasse, mit einer BTC Adresse, es geht nat\u00fcrlich jedes Objekt:<\/p>\n<pre class=\"lang:java decode:true \" >\r\n\/*\r\n * @author Thomas Wenzlaff\r\n *\r\n *\/\r\npublic class Db {\r\n\r\n\tpublic static void main(String[] args) {\r\n\r\n\t\tEmbeddedStorageManager storage = EmbeddedStorage.start();\r\n\r\n\t\tAdresse buyMeACoffeeBtc = new Adresse();\r\n\t\tbuyMeACoffeeBtc.setAdresse(\"bc1qj4grttyhk2h5wqask3nku70e3qtycssz5kvw5l\");\r\n\t\tif (buyMeACoffeeBtc.isValid()) {\r\n\r\n\t\t\tif (storage.root() == null) {\r\n\t\t\t\tSystem.out.println(\"Keine DB vorhanden, anlegen in ..\/storage Verzeichnis ...\");\r\n\t\t\t\tstorage.setRoot(buyMeACoffeeBtc);\r\n\t\t\t\tstorage.storeRoot();\r\n\r\n\t\t\t} else {\r\n\t\t\t\tSystem.out.println(\"DB vorhanden, verwenden ...\");\r\n\t\t\t\tAdresse gespeicherteRootAdresse = (Adresse) storage.root();\r\n\t\t\t\tSystem.out.println(\"Gespeicherte Root Adresse: \" + gespeicherteRootAdresse);\r\n\t\t\t}\r\n\t\t\t\/\/ und eine REST-Service starten ... http:\/\/localhost:4567\/store-data\/root\r\n\t\t\tStorageRestService service = StorageRestServiceResolver.resolve(storage);\r\n\t\t\tservice.start();\r\n\t\t}\r\n\r\n\t\t\/\/ storageManager.shutdown();\r\n\r\n\t}\r\n\r\n}<\/pre>\n<p>Es sind mind. diese Schritte n\u00f6tig:<\/p>\n<p>1. EmbeddedStorageManager erstellen<br \/>\n2. das zu Speichernde Objekt mit setRoot(&#8230;) setzen<br \/>\n3. das Objekt in die DB speichern mit storeRoot()<br \/>\n4. Optional ein REST-Service starten mit StorageRestServiceResolver.resolve(storage); und start()<\/p>\n<p>und schon kann:<\/p>\n<p>&#8222;To fully or partially persist and restore a Java object graph in the simplest way possible for the user.&#8220;<\/p>\n<p>Weitere Infos bei <a href=\"https:\/\/www.heise.de\/news\/EclipseStore-will-fuer-Java-Datenbanken-ersetzen-9575915.html\" rel=\"noopener\" target=\"_blank\">Heise<\/a> oder auf der <a href=\"https:\/\/docs.eclipsestore.io\/manual\/storage\/getting-started.html\" rel=\"noopener\" target=\"_blank\">Projektseite<\/a>.<\/p>\n<p>Es gibt auch einen REST-Client, denn kann man sich als <a href=\"https:\/\/docs.eclipsestore.io\/manual\/storage\/rest-interface\/client-gui.html\" rel=\"noopener\" target=\"_blank\">jar laden<\/a> und dann mit <\/p>\n<pre class=\"lang:default decode:true \" >java -jar storage-restclient-app-1.0.0.jar --server.port=8888<\/pre>\n<p>starten. Aufruf dann mit <strong>http:\/\/localhost:8888\/instance<\/strong> Es startet dann ein Vaadin Client auf einem Tomcat in ein paar Sekunden.<\/p>\n<p>Anmeldung:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.23.56.png\" alt=\"\" width=\"1896\" height=\"926\" class=\"aligncenter size-full wp-image-21241\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.23.56.png 1896w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.23.56-300x147.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.23.56-1024x500.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.23.56-768x375.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.23.56-1536x750.png 1536w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Objekt Info:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.24.25.png\" alt=\"\" width=\"3284\" height=\"694\" class=\"aligncenter size-full wp-image-21240\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.24.25.png 3284w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.24.25-300x63.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.24.25-1024x216.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.24.25-768x162.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.24.25-1536x325.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.24.25-2048x433.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Statistik Tab:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.24.55.png\" alt=\"\" width=\"3286\" height=\"1042\" class=\"aligncenter size-full wp-image-21242\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.24.55.png 3286w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.24.55-300x95.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.24.55-1024x325.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.24.55-768x244.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.24.55-1536x487.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2023\/12\/eclipse-db-client-2023-12-16-um-18.24.55-2048x649.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit ein paar Javazeilen (mind. JDK 11) eine Datenbank mit REST-Service erstellen? Ja das geht in ein paar Minuten. Einfach in der pom.xml diese Eintr\u00e4ge:<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,3897,79],"tags":[1441,2046,2177,5879,2178,266,2487,4109,1267],"class_list":["post-21238","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-java-programmierung","category-programmierung","tag-datenbank","tag-db","tag-eclipse","tag-eclipsestore","tag-java","tag-neu","tag-rest","tag-rest-service","tag-service"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/21238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=21238"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/21238\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=21238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21238"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}