NHibernate O/R Mapper für .Net


Norbert Eder

Erfahrenes Mitglied
Gentle.NET hat mit NHibernate nicht besonders viel zu tun. NHibernate spielt quasi Database Abstraction Layer hin zu einer beliebigen relationalen Datenbank.

Gentle.NET hingegeben ist im Grunde ein ODBMS, sprich ein Object oriented Database Management System. Das heißt es werden Objekte in einen Store persistiert. Die Unterschiede zwischen ODBMSen und RDBMSen sind mitunter schon nicht so klein. Mal abgesehen von den Vor- und Nachteilen beider. Ich kann das Thema aber gerne näher ausführen :)
 

Deemax

Erfahrenes Mitglied
Hi,

ich wollte mit NHibernate in nächster Zeit ein Projekt beginnen hatte bisher aber nur kurz Zeit die mitgelieferten Beispiele durchzuspielen.
Hat einer von euch schon mal ein Projekt damit erfolgreich beendet? Sprich Grenzen evtl. Probleme entdeckt die erst im praktischen Einsatz auftauchen. Z.B. Probleme mit Autowerten/Fremdschlüsseln etc. ?
 

Christian Kusmanow

Erfahrenes Mitglied
@Norbert

Hallo!

Thx erstmal für die Antwort.
Das NHibernate objektorientierten Zugriff auf Datenbanken liefert hat mir der Christian Fein schon mal erklärt. Biespiel
Das find ich so interssant das ich gerne mehr darüber erfahren will. Leider lässt meine aktuelle Aufgabenstellung auf Arbeit keine weiteren Recherchen zu.
Das Beispiel zu Gentle.NET sieht für mich eigentlich genau so aus.
Und aus beiden einleitenden Absätzen der Beispiele geht für mich auch so ziemlich das gleiche hervor. Berichtige mich bitte falls ich mich irren sollte.
Du würdest mir und den anderen, die damit noch keine Erfahrung haben, eine großen Gefallen tun, wenn Du die Vor- & Nachteile "näher ausführst". ;)

Gruß, cosmo
 

Norbert Eder

Erfahrenes Mitglied
Nein, falsch ...

mit NHibernate greifst du objektorientiert auf relationale Datenbanken zu.

Mit Gentle.NET greifst du objektorientiert auf Objektorientierte Datenbanken zu. Das ist ein nicht kleiner Unterschied.
 

mnmr

Grünschnabel
Norbert Eder hat gesagt.:
mit NHibernate greifst du objektorientiert auf relationale Datenbanken zu.

Mit Gentle.NET greifst du objektorientiert auf Objektorientierte Datenbanken zu. Das ist ein nicht kleiner Unterschied.
Das ist leider ganz und gar falsch. Gentle unterstützt zur Zeit nur relationale Datenbanken, genau wie NHibernate. Dies sollte auch umgehend von der Liste unterstützter DBs hervorgehen - SQL Server, MySQL, PostgreSQL, etc. - dies sind alle relationell.

Yours,
Morten
 

Norbert Eder

Erfahrenes Mitglied
Ah, sorry, hatte es verwechselt. Stimmt. Gentle.NET ist auch nur für relationale Datenbanken.

Aber wer sich mal objektorientierte Datenbanken angucken will, kanns ich ja mal nach db4objects umsehen. Ist gratis und gibts auch für .NET. Feine Sache übrigens, aber hat auch seine Macken.
 

Konstantin Gross

Erfahrenes Mitglied
Sorry für die dumme Frage, aber was für einen nutzen hat dieses System? Was kann ich damit machen? Ich habe mir zwar die Beispiele angeschaut werde aber dadurch nicht schlau.
 

Maresque

Grünschnabel
Um da ein paar Missverständnissen vorzubeugen, hier eine
Erklärung. Zunächst Aus der Sicht der Entwicklung dieser
Systeme.

Fangen wir mal bei Hibernate an. Das ist ein Framework, um
objektorientiert auf relationale Datenbanken zuzugreifen.
Das Teil ist in Java realisiert.

NHibernate: Das "N" ganz vorne steht für die dot-NET-World.
Es handelt sich um eine Ausführung für ".NET", und versteht
sich als Port von Hibernate. Auch in Java. Auch OpenSource.

Gentle.NET: Fast das selbe wie NHibernate. Aber in C#
realisiert.

Wenn ich das richtig sehe, dann kommen Gentle.NET und
NHibernate aus derselben Feder.

Und was kann man nun damit machen:
Schicht und einfach: Vereinfachten Zugriff auf Datenbanken.
Der Entwickler hat in Gentle.NET jetzt auch den Zugriff auf
SQLite realisiert. Daraus wird schon deutlich, dass es im
wesentlichen um die Bearbeitung von SQL-Datenbanken
geht, also relationalen Datenbanken.

Die genannten "Pakete" verstehen sich als
"persistence framework"; das bedeutet,
dass man -sagen wir mal- "gleichbleibend"
auf die Datenbanken zugreifen kann, aber
nicht mit SQL-Befehlen.
Nur eben auf eine andere Art. Nämlich
objektorientiert. Deswegen findet auch
der Begriff "object persistence framework"
Anwendung.

Anders herum gesagt: Mit (N)Hibernate und
Gentle.NET sich zu beschäftigen ist genau
dann interessant, wenn man Datenbanken
verwenden muss, um große Datenmengen
sinnvoll zu managen. Aus der Sicht des
Programmierers handelt es sich um Bibliotheken,
um die Programmierung von Datenbankzugriffen
zu vereinfachen. Und "Framework" eben deshalb
weil ein ganzes System damit abgedeckt wird.
Am Anfang tauchte der Begriff "Mapper" auf.
Man codiert in einer Sprache (Java oder C#)
und das Framework mapped die Funktionen
nach SQL. Diese Technik wird auch als
objektrelationales Mapping bezeichnet.
 

Christian Kusmanow

Erfahrenes Mitglied
Hallo Maresque!

Willkommen im Forum!

Und vielen dank für deinen Beitrag. :) Ich hab zwar immer noch nicht wegen Zeitmangel und
andren Projekten damit angefangen,
weiss jetzt aber wenigstens das ich Gentle.NET NHibernate voziehen werde. :D
Warum? Ich würde sagen das gibt mir dann igendwie ein gutes Gefühl. :D :p ;)
 

Norbert Eder

Erfahrenes Mitglied
Nun, das würde ich so nicht sagen. Gentle.NET kommt an die Leistungsfähigkeit von NHibernate noch nicht ran. Aber mir is das egal, ich hab meinen eigenen DAL *gg*
 

Thomas Darimont

Premium-User
Hallo!

ich hab meinen eigenen DAL *gg*
Weshalb das? Wäre es nicht einfacher gewesen eine bestehende ORM Lösung wie NHibernate oder eben dieses Gentle zu verwenden, oder haben deine Anforderung die Entwicklung eines eigenen Data Abstraction Layers zwingend notwendig gemacht? Sind diese ORM Lösungen unter .Net noch nicht so etabliert?

Ich würde sagen das gibt mir dann igendwie ein gutes Gefühl.
Tolle Begründung... schlägst du das deinem Chef auch so vor? *g*

Gentle.NET: Fast das selbe wie NHibernate. Aber in C#
realisiert.
NHibernate ist doch auch in C# realisiert.

Gruß Tom
 

Christian Kusmanow

Erfahrenes Mitglied
Norbert Eder hat gesagt.:
Nun, das würde ich so nicht sagen. Gentle.NET kommt an die Leistungsfähigkeit von NHibernate noch nicht ran.
Thomas Darimont hat gesagt.:
Tolle Begründung... schlägst du das deinem Chef auch so vor? *g*
Ihr wisst doch wie das ist. Man vertraut selten dem anderen Ufer. :D
( Jetzt nicht falsch verstehen, das war mit Absicht. ;-] )
Thomas Darimont hat gesagt.:
NHibernate ist doch auch in C# realisiert.
Noch besser. ;) :D
 

Norbert Eder

Erfahrenes Mitglied
Thomas Darimont hat gesagt.:
Weshalb das? Wäre es nicht einfacher gewesen eine bestehende ORM Lösung wie NHibernate oder eben dieses Gentle zu verwenden, oder haben deine Anforderung die Entwicklung eines eigenen Data Abstraction Layers zwingend notwendig gemacht? Sind diese ORM Lösungen unter .Net noch nicht so etabliert?
Ich hab natürlich unterschiedliche Persistenz-Frameworks evaluiert. Darunter natürlich auch NHibernate. Das ist allerdings schon ne Zeit her und damals ists bei mir absolut instabil gelaufen. Gentle.NET kann mitunter ein wenig Aufwand verursachen. Dann hab ich auch noch ein paar eigene Features angedacht und tja, deshalb entstand mein eigener DAL, der genau das tut was ich will bzw. brauch.

Thomas Darimont hat gesagt.:
NHibernate ist doch auch in C# realisiert.
Fast alle Umsetzungen von "Java-Tools" sind in C# realisiert. VB.NET würde da auch wenig Sinn machen, vor allem weil das Ding kreuz und quer castet ohne dass man als Programmierer die Hand drauf hat - mal davon abgesehen, dass eine Portierung von Java -> C# einfacher ist als eine von Java -> VB.NET.