Qual è il tuo modo preferito di interazione con i database dal tuo linguaggio di programmazione?[chiuso]

StackOverflow https://stackoverflow.com/questions/8087

  •  08-06-2019
  •  | 
  •  

Domanda

Ci sono numerosi modi per connettersi e interagire con il livello di database.In Java, per esempio, diffuse sono JDBC chiamate di materie prime, SQL, object relational mapper, JDBCTemplate (Primavera), stored procedure, ecc.

Nella tua lingua, quale opzione è la vostra preferenza e perché?Quando vuoi prendere in considerazione gli altri?

È stato utile?

Soluzione

ORM ogni volta, è il minimo che devo pensare database di meglio.

Altri suggerimenti

Mi piace molto la 3 + 1 tier modo di fare le cose.Uno di primo livello per l'interfaccia utente, uno per la logica di business e per la persistenza dei dati.L'ultimo che hai detto?Dominio di oggetti e interfacce.Questo rende possibile caricare fino a uno o due dei principali livelli più il dominio di primo livello", e il codice dovrebbe funzionare.

Esso si basa fortemente su l'iniezione di dipendenza e Inversion of Control i principi.I dati/persistenza livello non solo due cose.Si crea, si legge, si aggiorna e cancella i dati e le mappe per il dominio in oggetto formato.

L'interfaccia utente di livello fa l'esatto opposto.Visualizza e riceve i dati in modo che l'utente può riguardare, e le mappe di ingresso/uscita da e per il dominio in oggetto formato.

Livello di logica di business solo bisogno di sapere una cosa.La logica di Business.Essa non si preoccupa di dove si trovano i dati, e non si preoccupa di dove il livello di dati è quello di mettere.Sa che dovrebbe bandiera di un account che è stato appena scoperto, come fisicamente fare che non fa parte del suo lavoro davvero.

Il dominio oggetti stessi non hanno alcuna logica, sono solo contenitori per il passaggio di dati tra i livelli.Questo significa che è possibile caricare gli oggetti di dominio e interfacce senza dover pensare a tutti sulle dipendenze.

Alla fine della giornata mi sento che ho una abbastanza chiaro base di codice con ben separati i livelli.E con severe per interfacce e buona classi di base la maggior parte del codice è solo per indicare al software cosa fare quando X succede.Proprio come dovrebbe essere.

</rant>

Edit:Oh, sì, sì, sì.Questo è vero sia per il LINQ, Subsonico, e altri Orm.

Ruby on Rails ActiveRecord asciuga il pavimento con tutto il resto che abbiamo visto finora. LINQ sembra che potrebbe essere meglio in alcuni casi, ma ActiveRecord è così flessibile.

LINQ è la strada da percorrere per me da qui

Preferisco costruire un business object model layer (oggetti e collecitons di oggetti).

Costruire la capacità di interagire con il database in ogni oggetto/raccolta (per SQL Server, io uso Sistema.Dati.SqlClient).Ho usato questo modello per SQL Server, MySQL e Oracle.

Poi mi interagire con gli oggetti dal mio codice dell'applicazione.

Astraendo il mio database in oggetto, il mio codice dell'applicazione è coerente indipendentemente dal database back-end.

ORM è davvero fantastico.

Io uso SQL Alchimia quando si lavora all'interno di python - funziona con quasi tutti i DBMS ho imbattuto.

Per la leggerezza e applicazioni data-driven su MacOS X, io uso di Dati di base, che ha un grande strumento di modellazione dati accessibili tramite Xcode.

Entrambi questi mostrano che ORM fatto a destra è eccellente.Ho avuto meno successo e divertimento con EJB.

Non ho preso l'LINQ mondo ancora, ma ho davvero imparato ad amare il DataTable/TableAdapter classi che Visual Studio ha fatto attraverso un dataset XSD.In pochi clic e trascina dopo aver creato il mio schema del database, ora ho un DataSet/DataTable oggetto che è fortemente tipizzato e non ho l'adattatore metodi che utilizzano query parametrizzata per la mia stored procedure per tutti i miei CRUD dichiarazioni.Può anche creare query tabella adattatori per alcune di quelle procedure che non sono direttamente legati a un tavolo.

Oh, e se non ha ancora creato la stored procedure di sicurezza e le tabelle, la procedura provvede a creare le procedure o le adhoc istruzioni SQL per voi.

Questo è stato fuori dal Visual Studio 2005 e ha drasticamente tagliato i miei "struttura" del tempo con la mia nuova web app e ho più tempo per concentrarsi sul business e la logica di presentazione.

Utilizziamo un approccio misto, a seconda su ciò che soddisfa per la particolare situazione all'interno dell'applicazione:

  • Durante la lettura di una pagina che vale la pena di informazioni da visualizzare e per un utente di aggiornare utilizziamo Hibernate
  • Quando l'elaborazione di un lotto di aggiornamenti o riassumendo, dove la maggior parte dei dati già presenti nel database (ad es.l'elaborazione di fine giornata abbiamo PL/SQL (e provare a pensare in set)
  • Quando un utente esegue una ricerca o si esegue un report di sintesi, usiamo ibatis sqlmaps per costruire alcuni SQL e visualizzare solo i campi che ci interessano (non ogni colonna e non certo inutili figlio di righe urggh)
  • Tutto ciò che ha davvero a correre veloce, useremo qualunque sia l'approccio funziona meglio

Questo è con java/Oracle.

ActiveRecord, che è un modello documentati prima (penso) in Fowler Modelli di Enterprise Architecture.Io credo che sia implementato in altre lingue oltre a Ruby, anche se è ben noto come tecnologia di base, in Rails.Qualunque sia, è un modo pulito di astrazione del database, anche se devo confessare che trovo un po ' goffo e nel find_by_sql zona.Ma che potrebbe essere solo me.

Ma (mettendo su un Vecchio Burbero hat ora) tutte le Orm nel mondo non sono un sostituto per una buona conoscenza di SQL, senza che io davvero non mi piace vedere l'accesso a un RDBMS essere consentito a tutti.

Usiamo Delphi e Oracle Data Access Components (ODAC) e ADO via Oracle.OleDBProvider.

Può modo preferito è quello di utilizzare le Chiacchiere con una Gemma Oggetto del Repository.Perché?Non ORM problema.Vorrei solo prendere in considerazione qualcosa di diverso se costretto o minacciati dal mio datore di lavoro.

Il mio modo preferito è quello di avere un oggetto livello di astrazione.Idealmente, questo è solo posto che funziona con SQL.Ma in pratica, gli oggetti che bisogno a volte di fare SQL-y cose, troppo.Ma nulla al di fuori dell'oggetto.

Finora, ho scritto di tali strati a me stesso, perché ciò che era disponibile era troppo scomodo, troppo lento o troppo grande.

Io uso normale JDBC perché sto sviluppando un'applicazione basata sui dati e il mio modello di database è molto complesso.Tutto è descritto nel database, anche la struttura delle tabelle.Oltre a questo io uso le stored procedure di molto.Pertanto ORM non è un'opzione per me.

Mi piace Sospensione un sacco :)

So che ha una curva di apprendimento, ma una volta che hai imparato, è molto bello.

Inutile dire che non vedo l'ora di mettere le mani sul nuovo Entity Framework in .NET 3.5 SP1 (so che è già disponibile, ma io sono un po ' pigro di tipo XML :) )

In C# mi piace LINQ to SQL nulla di nuovo, ma mi piace molto usare .netTiers + CodeSmith Generatore per ottenere un rapido e sporco strato di dati al database succede se sto usando C# su .NET 2.0.

Stiamo attualmente utilizzando ODAC a parlare per Oracle database e utilizzare un sacco di Oracle Pacchetti (PL/SQL).N-tier system è fatto attraverso RemObjects il che significa che il nostro cliente non ha alcuna SQL in essa, a qualsiasi titolo, deve solo la possibilità di inviare richieste HTTP in modo che nessun onere di installazione.

Tutto questo viene fatto utilizzando Borland Delphi e che è stato di woking per 2 anni in un ambiente di produzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top