Modelo de dados único

Olá.

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?

Obrigado.

O que quer dizer com modelo de dados?

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.

Mas por que alguém vai querer usar a mesma entidade em sistemas diferentes?

Vc pode usar Hibernate para persistência e JSON para usar no frontend.

O Hibernate permite criar as tabelas automaticamente, então bastaria criar o POJO.

O JSON é uma forma de converter objetos em texto, portanto converta os POJO em texto e envie para o frontend onde pode ser convertido em objetos JS.

Olá Diego. Obrigado, vou estudar essa possibilidade.

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.

Mas são diferentes sistemas, tanto que pra cada um é usado uma linguagem diferente (SQL, Java, JS).

É justamente isso que gostaria de evitar. :slight_smile:
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. :slight_smile:
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.

Obrigado pelo ponto de vista pfk66

Olá javaflex. Não se trata de trabalho de faculdade, apenas um pensamento, ou utopia pelo o que foi exposto aqui.
Obrigado

Objetos não tem só dados senão seriam estruturas.

Como o desenvolvedor do framework vai fazer pra mapear os métodos de um objeto para o banco de dados? E referebcias a outros objetos?