Cosa includere in una classe del database

3

Attualmente sto sviluppando un'applicazione java, che comunica con un server SQL. Pertanto ho creato la classe Database che è responsabile per open() e close() .

Voglio poter aggiungere dati al database. In questo esempio, la tabella viene chiamata job. Pertanto ho creato una classe Job . Oltre a questi lavori, ci saranno (molte) cose diverse, che saranno archiviate nel database. La mia domanda è: dove inserisco il mio metodo addJob(Job j) ? Finora, posso pensare a tre possibili soluzioni:

  • Aggiungi il metodo addJob(Job j) alla classe Database che fornisce l'astrazione per il resto del programma. Il resto del programma non deve preoccuparsi di come questo è implementato. Lo svantaggio di questo è che alla fine Database diventerà molto grande.

  • Crea una classe separata JobHandler con il costruttore public JobHandler(Database d) che accetta un database. In questo JobHandler ho intenzione di fornire addJob(Job j) . Il mio problema è qui, su quale livello dovrei interagire con Database poiché attualmente non ci sono metodi pubblici tranne open() e close() . Devo creare un metodo che accetti le istruzioni pure sql? Questo non mi sembra molto buono.

  • Rendi astratta la classe Database ed estendila in modo da implementare qui i metodi mancanti. Il lato negativo è che non posso passare il database e utilizzare la stessa connessione per più query di diverso tipo.

Cosa si potrebbe fare per risolvere questo problema? Come dovrei strutturare le mie classi in modo che non diventino troppo grandi e anche non troppo della classe del database deve essere esposta alle classi che implementano i metodi per trattare i dati?

Modifica Si noti che quel lavoro è una classe casuale, che dovrebbe servire solo come esempio per i dati che sono memorizzati nel database.

    
posta Freddy 08.09.2016 - 02:33
fonte

1 risposta

4

La domanda è molto confusa. Ciò che lo rende più confuso è il fatto che si è deciso di utilizzare Job e Jobhandler come esempi che fanno pensare che la domanda riguardi i lavori di database (attività pianificate). Ma dopo aver letto la modifica credo che tu stia cercando di scrivere un DAO e stavi parlando di posti di lavoro come in "una posizione di lavoro" ".

Non scrivere una classe Database. Basta creare una connessione JDBC e passarla al DAO.

Potresti provare a scrivere un DAO generico o scrivere DAO individuali per ogni entità. I DAO contengono frasi SQL al loro interno.

Un altro pattern è Pattern di registrazione attivo .

I DAO accedono ai database, incapsulano SQL e consentono di popolare gli oggetti di business. I DAO possono anche avere metodi che restituiscono elenchi di dati.

Active Record viene in genere utilizzato per implementare oggetti business che gestiscono la scrittura e leggono i loro dati dal database stesso. Questo è considerato troppo poiché le classi non dovrebbero ostacolare la loro persistenza. I record attivi rappresentano una singola riga di una tabella.

Questa domanda sul refactoring di un Active Record nel modulo DAO ti aiuterà perché ha un esempio completo di un oggetto che accede a database e inserti o aggiornamenti e le sue risposte spiegano come implementare DAO.

    
risposta data 08.09.2016 - 03:29
fonte

Leggi altre domande sui tag