Estou projetando um novo aplicativo que lida com muita lógica de negócios.
Para evitar o emaranhamento habitual entre diferentes camadas de aplicativos que frequentemente se infiltram nesses sistemas ao longo do tempo, quero implementar uma separação limpa de preocupações desde o início. De um modo geral, quero separar:
- camada de apresentação
- camada de lógica de negócios
- camada de armazenamento e persistência de dados
A questão com a qual mais estou enfrentando é como realmente implementar o comportamento nas bordas de maneira limpa, principalmente entre os negócios e a camada de dados. Já vi muitos aplicativos em que a camada de dados entrega objetos ORM à camada principal, acoplando efetivamente a lógica de negócios ao ORM.
Devo converter objetos ORM para algum formato serializado (JSON?) E desserializar isso na camada de negócios em uma estrutura de dados interna a essa camada? Isso não é muita sobrecarga?
Como você implementa de maneira limpa a separação de preocupações para aplicativos de tamanho médio? Algum conselho?
article.getId()
, article.getTimestamp()
etc. Esses mapeamentos parecem mais frequentemente do que não específicos do ORM usado.