La risposta qui dipende da cosa stanno facendo i metodi stessi. Con un nome come loadDataFromDB()
sembra che tu stia effettivamente caricando l'oggetto dal database. Se è così, dovresti farlo sicuramente altrove. Normalmente, le interazioni tra database coinvolgono la gestione delle transazioni, l'autenticazione di qualche tipo, l'apertura e la chiusura della connessione, la gestione del pool di thread, ecc. Anche se si sta utilizzando un ORM, continuerei a sostenere che la separazione delle preoccupazioni farebbe una distinzione tra il dominio di modellazione e l'accesso il tuo dominio da un archivio dati. Per esempio, stai potenzialmente accoppiando il tuo modello al negozio stesso. Cosa succede se si sta utilizzando una mappa in memoria thread sicura per lo sviluppo, ma si desidera utilizzare Postgres per la produzione? È un po 'improbabile, ma credetemi, i datastore cambiano spesso quando un'app deve scalare. La programmazione su un'interfaccia DAO consente di semplificare il codice chiamante e separare l'utente dallo specifico negozio.
Se d'altra parte, si assuma JDBC qui per il gusto di esempio, è necessario convertire un ResultSet
in un POJO, quindi un costruttore nella classe del dominio che è del formato public PlayerInfo(ResultSet rs)
, è perfettamente accettabile nel modello di dominio stesso.
In entrambi i casi, l'accesso ai dati non appartiene al modello di dominio stesso. Nel tuo caso, una sorta di classe DataProvider
che carica tutti i modelli di dominio all'avvio ha più senso. Questa classe avrebbe un singolo punto di accesso che viene chiamato nel processo di avvio del server delle app. Questo punto di ingresso effettuerebbe quindi chiamate per caricare tutti i modelli di dati, tuttavia, se necessario,