Tak trochu pokritizujem a prihrejem svoju polievocku. Vrstvy v architekture mam roky. Potom sa zistovalo ktore a ako ich rozdelit. A tak vznikli nejake best practices a pre DB orientovane aplikacie ktorych je 99% sme prijali za standard DDD (Domain Driven Design). No potom prisli programatori a zacali to kazit, kod si pisali kde ako chceli a ked ste ich tvrdo nekontrolovali a netrestali tak to prznili kde sa dalo. Tak sme prisli s MDA (Model Driver Architecture). Takze v nejakom DSLku si navrhnete entity, rozhranie, ... a vela kodu to vygeneruje. Programator potom dostane uz iba svoj maly piesocek ktory neviem preliezt alebo je lahke zistit kedy sa o to pokusa. Ak mate zaujem sa trochu pohrat skuste napriklad toto: http://sculptorgenerator.org/ a Documentation -> Advanced Tutorial. Tam sa dozviete ako jednoducho udrazat model, api pod jednou strechou, architektovi umoznuje velku flexibilitu a silu obmedzit programatorov v przneni kodu a zavedie poriadok do projektu.
Neviem inac preco sa tu teraz o tom pise, toto boli zaujimave temy mozno tak 10-15 rokov dozadu.
Dostane vygenerovane predpripravene metody. Default uz maju nejaku implementaciu v base classe ktory sa vzdy pregeneruje. Plus ma vygenerovany interface.
Pokial do vygenerovaneho classu nezasiahne tak ten sa pri dalsom generovani tiez vygeneruje nanovo. To je dobre v case burliveho uvodneho vyvoja kedy sa hlavne hrabete v model.btdesign.
Potom ked si uz nejaku metodu upravite a zmenite rozhranie tak interface vas prinuti tuto metodu implementovat. Standardne CRUD (findById, findByCondition, save, delete, ...) operacie sa generuju automaticky. Je to enterprise grade vyskusane na vela velkych projektoch. Podporuje to aj dalsie rozsirenie pre CQRS a EventSourcing pripadne mozte vygenerovat rovno aj webovu aplikaciu alebo REST.
Pěkný projekt. Našel sem nedávno v projektu https://github.com/ddd-by-examples/library toto https://www.archunit.org , ale zatím jsem to nezkoušel.