Existe alguma ferramenta ou framework Java onde seja possível definir um único modelo de dados e usá-lo no backend (camada de persistência), na camada de comunicação (rest) e cliente (JavaScript), com pouca ou nenhuma necessidade de modificação?
Por exemplo, definir uma entidade e, a partir dessa definição, ter uma ou mais tabelas num banco de dados relacional, um POJO para usar no backend Java e, um objeto JS para trabalhar no frontend. Tudo de forma automática, ou seja, sem a necessidade de escrever a entidade em cada camada.
Olá pfk66. A ideia não é usar as mesmas entidades em sistemas diferentes, mas sim não ter que ficar rescrevendo-as nas diferentes camadas de um mesmo sistema.
É justamente isso que gostaria de evitar.
Assim como podemos ter o esquema da base automaticamente gerado a partir de POJOs, como explicado pelo Diego, ter também essas entidades no frontend de maneira automática.
Não necessariamente existe um mapeamento direto entre entidades e resources que voce expõe através de uma API REST, muito menos ainda com relação ao que diz respeito ao cliente da API, que é um aplicação completamente distinta, por isso não vejo como uma ferramenta nesse sentido seria útil.
O sentido inverso, mapear as entidades para tabelas, é possível mas boa sorte se precisa suportar grande quantidade de acessos usando esses frameworks (para aplicações com pouco acesso é ok). Sem falar que na maioria das vezes o modelo de dados é criado antes do modelo de objetos.
Isso existe mai[quote=“ze.sjrp, post:9, topic:342511, full:true”]
É justamente isso que gostaria de evitar.
Assim como podemos ter o esquema da base automaticamente gerado a partir de POJOs, como explicado pelo Diego, ter também essas entidades no frontend de maneira automática.
[/quote]
Isso é trabalho de faculdade? Em projetos reais principalmente de grandes empresas nunca vi essa conversa ir pra frente. Se o banco de dados é relacional, normalmente é feita a modelagem de dados antes em conjunto com da definição das funcionalidades. E a aplicação pode ser ou não implementada “orientada a objetos” através de mapeamentos.
Como já explicaram, são coisas diferentes. O banco de dados, se for relacional, entende SQL. O front-end HTML entende JavaScript e o back-end pode ser Java/.NET/PHP etc, que vai se comunicar com o front-end via HTTP trafegando json. A real é essa. Mas se quer seguir a linha da modelagem orientada a objetos, no back-end Java existem ferramentas como Hibernate para ajudar nisso, gerando comandos SQL magicamente através de recursos como Criteria/HQL/JPQL, que só existem nesse submundo. Além disso, como já falaram, ele gera a estrutura das tabelas automaticamente, mas eu nunca vi isso acontecer em um cenário real de grandes proporções.