Sto codificando una "piccola" applicazione usando il pattern MVP che ottiene i suoi dati da un database SQL.
Non sto usando un ORM fuori dalla scatola, e per motivi di apprendimento, sto scrivendo il mio semplice tipo di setup ORM / DAO. Sto utilizzando alcune idee da ormlite
Per quanto riguarda il livello del modello, ecco dove mi trovo:
- DatabaseObject: (si collega al database ed esegue i comandi sql, restituisce i risultati dalle query sql)
- DAO (collega un'entità al database.) crea la query dall'entità ed esegue l'oggetto database)
- Entità (la cosa aziendale con proprietà che rappresentano una colonna nel database)
La mia domanda si trova nella DAO / Entity Part e qual è l'approccio giusto.
- Potrebbe / il DAO essere iniettato nell'entità? Per esempio.
Customer.DAO.Create
vsCustomerDAO(Customer).Create
- Con le relazioni tra database (es. clienti e ordini) l'entità cliente (cliente) deve contenere una proprietà array / raccolta degli ordini del cliente? Come dovrebbe influire sulla domanda 1? L'ordine DAO è ora nidificato in un cliente. È questo il modo giusto?
- Presentatore: se ho capito bene, il presentatore è "cuore" del design. Gestirà la logica dell'interfaccia utente E potrebbe fare chiamate di logica aziendale e accedere ai dati tramite il livello del modello? Per esempio. l'interfaccia utente chiama un metodo di salvataggio nel presentatore (pseudo codice):
Save()
{
model.LoadFields(view.GetFields)
modelDAO.Save(model)
}
e questa azione carica nel presentatore
LoadCustomer()
{
modelDAO.Load(modelID, model)
orderDAO.Load(modelID, model.orders)
view.field1 = model.field1
view.field2 = model.field2
view.field3 = model.field3
view.fillOrdersListBox(model.orders)
}
Quanto sopra è una "buona" direzione?