{"id":186,"date":"2017-04-08T14:43:55","date_gmt":"2017-04-08T12:43:55","guid":{"rendered":"http:\/\/uc-mobileapps.com\/de\/?page_id=186"},"modified":"2021-01-30T14:07:57","modified_gmt":"2021-01-30T13:07:57","slug":"sql-flat-mapping-via-embedded","status":"publish","type":"page","link":"http:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/sql-flat-mapping-via-embedded\/","title":{"rendered":"Flaches Objekt-Mapping"},"content":{"rendered":"<p>Eine Klasse kann mit&nbsp;<code class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">@SeifeEmbeddable<\/code>&nbsp;annotiert werden und so die Felder in der SQL-Tabelle&nbsp;eines anderen BO&#8217;s abbilden, sogenanntes Flat-Mapping. Etwa bei einem Adress-Objekt das an mehreren Stellen in einem Projekt ben\u00f6tigt wird.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">@SeifeEmbeddable\npublic class Address {\n   @SeifeField\n   private String street;\n   @SeifeField\n   private String zipcode;\n   @SeifeField\n   private String city;\n   @SeifeField\n   private String state;\n}<\/pre>\n<p>Das System erlaubt es die Felder auch mit einem Prefix einzugliedern. Der nachfolgende Programmteil gen\u00fcgt um mit dem Code-Generator die \u00fcblichen Datenzugriffsobjekte f\u00fcr SQLite zu erstellen und wenn n\u00f6tig die passende Parcelable Schnittstelle zu generieren;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-highlight=\"9,12\" data-enlighter-language=\"java\">@SeifeClass\npublic class Customer {\n   @SeifeField\n   private Long id;\n\n   @SeifeField\n   private String name;\n\n   @SeifeEmbedded(prefix=\"billing_\")\n   private Address billingAddress;\n\n   @SeifeEmbedded(prefix=\"delivery_\")\n   private Address deliveryAddress;\n\n   public Address getBillingAddress() {\n      if (billingAddress == null) {\n         billingAddress = new Address();\n      }\n      return billingAddress;\n   }\n\n   public Address getDeliveryAddress() {\n      if (deliveryAddress == null) {\n         deliveryAddress = new Address();\n      }\n      return deliveryAddress;\n   }\n}<\/pre>\n<p>Das einfache Programmst\u00fcck erstellt die SQL Tabellen Definitionen welche Spalten wie &#8216;delivery_street&#8217;, &#8216;delivery_zipcode&#8217; enthalten und enth\u00e4lt den n\u00f6tigen Code um bei Laden und Schreiben des Objektes zum Adress-Objekt zu delegieren.<br \/>\nAls Entwickler ist es nur erforderlich die getter Methoden so zu schreiben, dass kein Null-Wert zur\u00fcck gegeben wird.<br \/>\nDas komplette Beispiel ist als <a href=\"https:\/\/github.com\/uc-mobileapps\/seife-samples\">Projekt auf GitHub<\/a>&nbsp;verf\u00fcgbar (oder&nbsp;<a href=\"https:\/\/github.com\/uc-mobileapps\/seife-samples\/blob\/master\/app\/src\/main\/java\/com\/uc_mobileapps\/seifesample02\/schema\/SupplierSchema.java\" target=\"_blank\" rel=\"noopener\">Link zum aus der @Embedded Annotation erzeugten Schema Peer<\/a>)<\/p>\n<p>Diese Architektur ist z.B. n\u00fctzlich, wenn eine Datenkopie in anderem Kontext gespeichert werden soll. Bei einer Kundenbestellung k\u00f6nnen wichtige Daten wie der Preis an der Bestellposition gespeichert werden. Sollte sich der Produktpreis einmal \u00e4ndern bleiben die Bestelldaten konsistent. Embedded Objekte gruppieren die relevanten Daten und die gleiche Instanz aus dem Produkt kann bei der Erstellung des Bestellpostens genutzt werden. Beim Schreiben in die Datenbank werden sie dann f\u00fcr die Bestellung in Kopie abgespeichert.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine Klasse kann mit&nbsp;@SeifeEmbeddable&nbsp;annotiert werden und so die Felder in der SQL-Tabelle&nbsp;eines anderen BO&#8217;s abbilden, sogenanntes Flat-Mapping. Etwa bei einem Adress-Objekt das an mehreren Stellen in einem Projekt ben\u00f6tigt wird. @SeifeEmbeddable public class Address { @SeifeField private String street; @SeifeField private String zipcode; @SeifeField private String city; @SeifeField private String state; } Das System erlaubt &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"http:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/sql-flat-mapping-via-embedded\/\"> <span class=\"screen-reader-text\">Flaches Objekt-Mapping<\/span> Weiterlesen &raquo;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":62,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v18.5.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Flaches Objekt-Mapping - UC Mobile Apps<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/sql-flat-mapping-via-embedded\/\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"http:\/\/uc-mobileapps.com\/de\/#organization\",\"name\":\"UC Mobile Apps\",\"url\":\"http:\/\/uc-mobileapps.com\/de\/\",\"sameAs\":[],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/uc-mobileapps.com\/de\/#logo\",\"inLanguage\":\"de-DE\",\"url\":\"http:\/\/uc-mobileapps.com\/de\/wp-content\/uploads\/sites\/2\/2018\/07\/cropped-UC-Logo.png\",\"contentUrl\":\"http:\/\/uc-mobileapps.com\/de\/wp-content\/uploads\/sites\/2\/2018\/07\/cropped-UC-Logo.png\",\"width\":512,\"height\":512,\"caption\":\"UC Mobile Apps\"},\"image\":{\"@id\":\"http:\/\/uc-mobileapps.com\/de\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/uc-mobileapps.com\/de\/#website\",\"url\":\"http:\/\/uc-mobileapps.com\/de\/\",\"name\":\"UC Mobile Apps\",\"description\":\"Innovative Softwareentwicklung und mobile Anwendungen\",\"publisher\":{\"@id\":\"http:\/\/uc-mobileapps.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/uc-mobileapps.com\/de\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de-DE\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/sql-flat-mapping-via-embedded\/#webpage\",\"url\":\"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/sql-flat-mapping-via-embedded\/\",\"name\":\"Flaches Objekt-Mapping - UC Mobile Apps\",\"isPartOf\":{\"@id\":\"http:\/\/uc-mobileapps.com\/de\/#website\"},\"datePublished\":\"2017-04-08T12:43:55+00:00\",\"dateModified\":\"2021-01-30T13:07:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/sql-flat-mapping-via-embedded\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/sql-flat-mapping-via-embedded\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/sql-flat-mapping-via-embedded\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/uc-mobileapps.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Android Code Generator f\u00fcr SQLite and DataProvider Schnittstellen\",\"item\":\"http:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Flaches Objekt-Mapping\"}]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Flaches Objekt-Mapping - UC Mobile Apps","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/sql-flat-mapping-via-embedded\/","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"2 Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"http:\/\/uc-mobileapps.com\/de\/#organization","name":"UC Mobile Apps","url":"http:\/\/uc-mobileapps.com\/de\/","sameAs":[],"logo":{"@type":"ImageObject","@id":"http:\/\/uc-mobileapps.com\/de\/#logo","inLanguage":"de-DE","url":"http:\/\/uc-mobileapps.com\/de\/wp-content\/uploads\/sites\/2\/2018\/07\/cropped-UC-Logo.png","contentUrl":"http:\/\/uc-mobileapps.com\/de\/wp-content\/uploads\/sites\/2\/2018\/07\/cropped-UC-Logo.png","width":512,"height":512,"caption":"UC Mobile Apps"},"image":{"@id":"http:\/\/uc-mobileapps.com\/de\/#logo"}},{"@type":"WebSite","@id":"http:\/\/uc-mobileapps.com\/de\/#website","url":"http:\/\/uc-mobileapps.com\/de\/","name":"UC Mobile Apps","description":"Innovative Softwareentwicklung und mobile Anwendungen","publisher":{"@id":"http:\/\/uc-mobileapps.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/uc-mobileapps.com\/de\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de-DE"},{"@type":"WebPage","@id":"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/sql-flat-mapping-via-embedded\/#webpage","url":"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/sql-flat-mapping-via-embedded\/","name":"Flaches Objekt-Mapping - UC Mobile Apps","isPartOf":{"@id":"http:\/\/uc-mobileapps.com\/de\/#website"},"datePublished":"2017-04-08T12:43:55+00:00","dateModified":"2021-01-30T13:07:57+00:00","breadcrumb":{"@id":"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/sql-flat-mapping-via-embedded\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/sql-flat-mapping-via-embedded\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/sql-flat-mapping-via-embedded\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/uc-mobileapps.com\/de\/"},{"@type":"ListItem","position":2,"name":"Android Code Generator f\u00fcr SQLite and DataProvider Schnittstellen","item":"http:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/"},{"@type":"ListItem","position":3,"name":"Flaches Objekt-Mapping"}]}]}},"_links":{"self":[{"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/pages\/186"}],"collection":[{"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/comments?post=186"}],"version-history":[{"count":4,"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/pages\/186\/revisions"}],"predecessor-version":[{"id":364,"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/pages\/186\/revisions\/364"}],"up":[{"embeddable":true,"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/pages\/62"}],"wp:attachment":[{"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/media?parent=186"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}