Linee guida di codifica per Controller e Dao?

1

Il mio Controller code:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
ObjectReader objectReader = objectMapper.reader(User.class);
.....
....
response.setData(userControllerDao.updateUserDao(user, id));

Il mio codice Dao:

public List<User> updateUserDao(String userName) {
 if(! userName.equalsIgnoreCase("")){
        String split[] = userName.split(",");
        for(String s: split){
            userInfoQuery.field(Constant.USER_ID).equal(s.toString());
        }
    }
......
return;

Sono un po 'confuso qui nelle linee guida sulla codifica. Come per l'architettura MVC dovrei scrivere business logic nel controller. Che mi dici di questa splitting /% di query% in null checking ? Dovrebbero essere passati al Dao lato?

Se sì, allora ho ancora bisogno di passare un Controller / List in String e dividerlo di nuovo qui. Ha senso spostarli sul lato Controller?

    
posta Amit Pal 04.07.2016 - 04:01
fonte

1 risposta

2

Il codice DAO entra nel Modello, non nel controller. Il codice DAO è in realtà più lontano dal controller rispetto alla business logic, e quella logica non va neanche nel controller.

Scrivi un livello che contenga metodi che convertono le operazioni CRUD (Crea, Leggi, Aggiorna, Elimina) nelle operazioni DAO. Chiama i nuovi metodi CRUD dal tuo controller invece del codice DAO.

Se hai bisogno di qualcosa che si avvicini alle operazioni di business, scrivi un altro livello che contenga metodi che comprendono le operazioni aziendali attuali (come TransferMoney, ReconcileInvoice o BuildWidget) e chiama i tuoi metodi CRUD da questo livello.

Quando hai finito, dovrebbe assomigliare a questo:

Database <--> DAO Code <--> CRUD methods <--> Business Logic <--> Controller <--> View 
|---------------------- MODEL -----------------------------|

Tutto a sinistra del controller è il Modello. L'unica cosa che il controller fa è decidere quali metodi del dominio aziendale chiamare.

    
risposta data 04.07.2016 - 04:12
fonte

Leggi altre domande sui tag