DTO w aplikacji biznesowej

0

cześć!
dzisiaj święto zmarłych, więc pomyślałam, że poszukam jakiś szkieletów ładnie napisanych aplikacji (dlatego jeżeli takie znacie to proszę o linki!!) i zaciekawiła
mnie jedna rzecz o tutaj:
https://github.com/jhipster/jhipster-sample-app/blob/master/src/main/java/com/mycompany/myapp/service/UserService.java#L86-L109

nie przestrzegają oni rad wujka Boba ( zwykle to rozumiem, ale nie w tym przypadku ) i przekazują wiele argumentów tego samego typu zamiast UserDTO.
czy powinien zmiast tego ten serwis przyjąć jednak dto z kontrolera zamiast serii tylu argumentów?

Oprócz tego zatrzymują te dto tutaj na kontrolerze
( https://github.com/jhipster/jhipster-sample-app/blob/master/src/main/java/com/mycompany/myapp/web/rest/AccountResource.java#L54-L77 )?

coś musi przeprowadzić konwersje dto -> model (np. jakiś konwerter).  wydawało mi się, że takie rzeczy powinny być w serwisie, ale oni to robią w kontrolerze więc jak to powinno być?

Pozdrawiam !

4

Ja bym Juliena nie zatrudnił.

mają DTO, ale :
Gdzieś zgubili konwerter (według Twojego wujka boba, to będzie Interface Adapters ). Zresztą... serio:

createUserInformation(userDTO.getLogin(), userDTO.getPassword(),
                    userDTO.getFirstName(), userDTO.getLastName(), userDTO.getEmail().toLowerCase(),
                    userDTO.getLangKey());

czy powinien zmiast tego ten serwis przyjąć jednak dto z kontrolera zamiast serii tylu argumentów?

Rozumiem że to pytanie retoryczne, jasne że powinien.
Wydaje mi się że najrozsądniejszym podzieleniem takiej monolitycznej aplikacji jest
Controller(userDTO) -> Facade(userDTO) -> [Interface Adapter] -> Serwis(UserModel) -> DAO -> Baza
Czasem może to być przerost treści nad formą ale to chyba najbardziej przypomina
user image

Ale to chyba jakiś projekt dla jaj, przecież ta https://github.com/jhipster/jhipster-sample-app/blob/master/src/main/java/com/mycompany/myapp/service/UserService.java#L86-L109 klasa to jest człowiek orkiestra, brakuje tam crona który co 24h wysyła maila który zamówi pizze autorowi :/

P.S
yebac DRY

    @Async
    public void sendActivationEmail(User user, String baseUrl) {
        log.debug("Sending activation e-mail to '{}'", user.getEmail());
        Locale locale = Locale.forLanguageTag(user.getLangKey());
        Context context = new Context(locale);
        context.setVariable("user", user);
        context.setVariable("baseUrl", baseUrl);
        String content = templateEngine.process("activationEmail", context);
        String subject = messageSource.getMessage("email.activation.title", null, locale);
        sendEmail(user.getEmail(), subject, content, false, true);
    }

    @Async
    public void sendPasswordResetMail(User user, String baseUrl) {
        log.debug("Sending password reset e-mail to '{}'", user.getEmail());
        Locale locale = Locale.forLanguageTag(user.getLangKey());
        Context context = new Context(locale);
        context.setVariable("user", user);
        context.setVariable("baseUrl", baseUrl);
        String content = templateEngine.process("passwordResetEmail", context);
        String subject = messageSource.getMessage("email.reset.title", null, locale);
        sendEmail(user.getEmail(), subject, content, false, true);
    }
    

to nie powinno się nazywać jhipser tylko jniezlysyf

1

Myślę, że po przeczytaniu "registerAccount" można sobie już resztę odpuścić.

1

Ktoś się naczytał o Streamach w Javie 8 a opuścił wszystkie poprzednie lekcje javy ;] Ciekawe czemu programują to lodówką bo IntelliJ już by im pewnie wykrył duplikacje kodu np. przy tworzeniu baseUrl. Nie radziłbym sie na tym kodzie wzorować ;]

0

okey dziękuję. czyli jhipster linkuje do przykładowej apki średniej jakości. czyli muszę pisać swój szkielet, bo w necie niczego fajnego nie ma :c

1 użytkowników online, w tym zalogowanych: 0, gości: 1