2011-07-03 15 views
15

Vorrei capire quali sono le casi d'uso, vantaggi e inconvenienti di scegliere di utilizzare Record, Mapper o addirittura entrambi, in un'applicazione Liftweb.Quando utilizzare Mapper o Record in Lift?

Questa domanda è venuto quando ho cercato di:

  • creare un albero come struttura per le classi del modello
  • creare un albero simile come la struttura per il rendering delle classi in una pagina
  • garantire diverso le classi nell'albero possono essere in stati diversi contemporaneamente. Uno è nello stato EDIT o CREATE e l'altro nello stato VISUALIZE per esempio.
  • Le classi di modelli possono essere create, lette o salvate su un servizio Web RESTful già funzionante.

Sto mettendo qui i casi d'uso solo per la cronaca. Puoi rispondere in un modo più generale.

+0

ho scoperto [questa] filetto (http://groups.google.com/group/liftweb/browse_thread/thread/afc784c7c29b346c/0ca6b2e5e39facc7?lnk=gst&q=mapper+3+years#0ca6b2e5e39facc7) che discute un certo punto su Mapper e Record dove afferma che Record è la strada da percorrere. Nonostante ciò, il mapper ha una documentazione molto migliore e sarà supportato per almeno altri 3 anni. –

+0

Ho già detto che lo stack di Mapper sembra più completo dello Stack di record? Chiunque ha qualche esperienza con entrambe le mani e può parlarne un po '? –

+4

Tim è 100% * SBAGLIATO * e non dovrei diffondere informazioni errate. Il record è * NON * un rimpiazzo per Mapper. Ognuno ha il suo focus (Mapper/Record JDBC/persistenza generica). –

risposta

16

Il mapper ha fatto parte di Lift prima che Lift fosse Lift. È un semplice bridge in stile "Active Record" tra il database e Scala. Ho creato Mapper sulla base di idee delineate qui: http://web.archive.org/web/20070303054927/http://blog.lostlake.org/index.php?/archives/19-Keeping-the-meaning-with-the-bytes.html

Il mapper è intimamente legato a JDBC e quindi ai database relazionali. Mapper ha un meccanismo ragionevole per la creazione di query semplici, ma per le cose complesse è necessario scrivere a mano SQL.

Il mapper è solido ma nitido.

Record è un'astrazione più generica tra backing store e Scala. Ha implementazioni più deboli delle idee delineate in "Mantenere il significato con i byte" ... e pochissime persone se ne accorgono o si preoccupano.

Esistono implementazioni Record per MongoDB, CouchDB, Squeryl e altri meccanismi di archiviazione. Scrivere un nuovo back-end è un paio di giorni di lavoro.

Il record ha molte "anomalie" e ogni backend ha le sue peculiarità. L'attuale proprietario del record ha avviato un refactoring all'ingrosso di Record.

Non credo che Record o Mapper ti forniranno strutture ad albero "out of the box" a meno che tu non stia utilizzando il backend MongoDB e in tal caso, le strutture ad albero saranno basate su documenti JSON anziché sulle relazioni .

+0

Questo era più di quello che stavo cercando. Grazie. In una nota a margine, la mia "persistenza" è alla base di un servizio RESTful. Quindi, implementerò le mie classi Record che caricano/salvano in quel servizio RESTful. Prendendo in considerazione ciò che hai detto, forse dovrei dare un'occhiata a MongoDB per vedere come viene fatto lì e basare liberamente il mio codice su di esso. :) –

+1

Anche il link su "mantenere il significato con i byte" è una buona lettura. –

2

Bene, le librerie Mapper e Record sono solo diverse astrazioni per l'accesso al database nelle applicazioni Lift. Record è il più recente ed è considerato un giorno un sostituto di Mapper. Al momento Record supporta database NoSQL come CouchDB e MongoDB. Se il tuo modello di dati si adatta al mondo NoSQL, prova a Record. Altrimenti puoi usare Mapper in connessione con un tipico database relazionale.

Spero che abbia menzionato alcuni punti interessanti per voi.

+0

Il record supporta anche l'approccio relazionale di Squeryl. – Etam

+0

Infatti, lo fa. Buono a sapersi. Ma importante per l'interlocutore: Squeryl è un altro framework ORM su Record. Quindi, devi imparare due API. Ma imho Squeryl è una delle migliori astrazioni di database che puoi usare con Scala. – Felix

+3

Il record * NON * è un rimpiazzo per Mapper. –

Problemi correlati