2017-07-25 2 views
0

Ich bin neu in Clojure. Ich möchte x Datensätze mit Feldern aus der Datenbank holen und Datensätze in die Datenbank einfügen. Welche sollte ich in diesem Szenario zwischen defrecord und defschema verwenden?Clojure: Unterschied zwischen Defrecord und Defschema

Sind diese gleich?

+0

Wenn ich nicht falsch liege. defschema wird von schema.core (clojure script library) abgeleitet. Defschema und Defrecord sind unterschiedlich. Ich sollte Defrecord in diesem Szenario verwenden. Bitte korrigiere mich Wenn ich falsch liege. – Srini

Antwort

1

defschema und defrecord beziehen sich nicht auf Datenbankschema ("Form der Datenbank") noch auf Datensätze (d. H. Zeilen in relationalen DBs).

Schema ist eine Bibliothek zum Beschreiben der Form Ihrer Daten und zum Überprüfen, ob einige Daten dieser Form entsprechen. Es ist ähnlich wie die neuere clojure.spec. Clojure Datensätze sind benutzerdefinierte Datentypen, die ein wenig wie Java-Klassen aussehen.

Es ist leicht zu versuchen, "objektorientierte" DB-Kommunikation mit Records für jede Entität zu schreiben. Alle Datenbanken enthalten jedoch Daten, bei denen es sich lediglich um Listen, Karten, Mengen und einige grundlegende Datentypen handelt. Ich schlage vor, dass Sie Ihre Daten in eingebauten Clojure-Datenstrukturen bereithalten und sie nicht in unnötigen Abstraktionen verstecken. (Randbemerkung: Ihre DB Komponente, statt DB Einheit, kann sehr wohl ein Clojure Nehmen sein zum Beispiel Lifecycle Management mit Component verwendet Aufzeichnungen..)

Ein guter Anfang Honey SQL wäre, die Ihnen erlaubt, um SQL-Abfragen als Clojure-Datenstrukturen zu erstellen. Sie erhalten Daten zurück und können mit den vollen Daten von Clojure an diesen Daten arbeiten.

Dann, wenn Sie bequem mit „laying alle Daten offen (ohne Verkapselung)“ gehen und die Form Ihrer Daten beschreiben, was gültig ist und was nicht. clojure.spec ist ein leistungsfähiges Werkzeug dafür.

Verwandte Themen