Showing posts with label Databases. Show all posts
Showing posts with label Databases. Show all posts

Thursday, March 7, 2013

Erfahrungsbericht: Simple.Data

Im Rahmen eines Kundenprojekts habe ich Erfahrungen mit der Datenzugriffsbibliothek Simple.Data gesammelt. What's the deal? Tadaa: der Ansatz von Simple.Data setzt auf Konventionen sowie dynamic und kommt dadurch ohne boilerplate code oder vorgenerierte ORM-Modellen aus. Mein Eindruck: It just works! Genial einfach in der Benutzung und sauber programmiert.

Intern arbeitet es mit der TPL nach dem Task-based Asynchronous pattern (TAP) ist damit also bereit für C# 5.0 mit async und await. Es ist nach meinen Tests threadsafe und transaktionssicher. Einfach klasse!

Für Entwickler die hauptsächlich mit statisch typisierten Sprachen wie Java oder C# arbeiten, ist der Umgang mit einer voll dynamischen API allerdings ungewohnt, bricht dann doch die gewohnt komfortable Begleitung durch Intellisense, Resharper und den Compiler weg.

Die meisten (ich auch) tendieren dann dazu, ein Repository als Abstraktionsebene einzuschieben.
Mark Rendle, Autor von Simple.Data, hat sich dazu seine eigenen Gedanken gemacht und beschreibt in seinem Post HOWTO: Dial up the static on Simple.Data einen zu TypeScript ähnlichen Ansatz mithilfe der Duck Casting-Bibliothek ImpromptuInterface. Stark!

Thursday, February 14, 2013

ODB: OR-Mapping für C++

Aus den meisten Programmiersprachen ist das Konzept des Objekt-relationalen Mappings nicht mehr wegzudenken.

In Java ist u.a. Hibernate (JBoss) oder die Java Persistence API recht bekannt. In .NET gibt es unter vielen anderen das Entity Framework (Microsoft) oder NHibernate. In Ruby ist ActiveRecord (Ruby on Rails) verbreitet. In Python verwenden viele das OR-Mapping von Django (Web-Entwickler natürlich) und auch PHP kennt einige Mapper. In JavaScript greift man nicht direkt auf die Datenbank zu (Ausnahme vielleicht node.js, da server-seitig), sondern typischerweise über Ajax und bildet das zurückgelieferte JSON meist auf die Oberfläche ab (z.B. mit Knockout).

In anderen Sprachen wie Flex, Perl oder C++ war OR-Mapping dagegen bislang kein sehr verbreitetes Konzept. Mit der Veröffentlichung von ODB (Code Synthesis) als Open Source ändert sich das jetzt. Das Mapping von Klassen und Feldern auf Tabellen, Spalten geschieht analog zu anderen Sprachen (Annotations, Attributes) über #pragma db. Generische Query-Klassen sorgen für gewohnt komfortable Abfragemöglichkeiten. Abhängigkeiten zu anderen Frameworks gibt es nicht (Qt und boost support gibt es). Unterstützt werden die wichtigsten Datenbanken (z.Zt. Oracle, MSSql, PostgreSQL, MySql und SQLite). Neben GPL gibt es noch andere Lizenzmodelle. Meiner Meinung ein wertvoller Zuwachs für die C++ Welt.