JDO vs objeto de valor
JDO é uma tecnologia de persistência Java que pode ser usada para armazenar POJO (Plain Old Java Objects) em bancos de dados sem a necessidade de entender as implementações subjacentes de diferentes armazenamentos de dados. O Value Object (também conhecido como Data Transfer Object) é um padrão de design abstrato que introduz o conceito de um suporte de dados simples com o objetivo de transferir dados entre várias camadas e camadas.
O que é o JDO?
O JDO (Java Data Objects) fornece um mecanismo para fornecer persistência a objetos Java e acesso ao banco de dados. O JDO é altamente transparente porque permite que os desenvolvedores de aplicativos Java acessem os dados subjacentes sem precisar escrever nenhum código específico para os bancos de dados. O JDO pode ser usado em várias camadas, incluindo Java Standard Edition, camada da Web e servidores de aplicativos. A API JDO é uma alternativa a outras persistências (mantendo objetos após o aborto do programa) de objetos Java, como Serialização, JDBC (Java DataBase Connectivity) e EJB CMP (Arquitetura Enterprise JavaBeans Container Managed Persistence). O JDO usa XML e aprimoramento de bytecode. A principal vantagem do uso da API JDO é que eles podem armazenar dados sem a necessidade de aprender uma nova linguagem de consulta, como SQL (que depende do tipo de armazenamento de dados). O JDO é muito fácil de usar, pois os desenvolvedores podem se concentrar apenas no modelo de objeto de domínio. Além disso, o JDO otimiza o código por si só, de acordo com o acesso aos dados. Como a API JDO não é rígida no tipo de armazenamento de dados, a mesma interface pode ser usada pelos desenvolvedores de aplicativos java para armazenar objetos java em qualquer armazenamento de dados, incluindo banco de dados relacional, banco de dados de objetos ou XML. O JDO é altamente portátil porque a modificação ou recompilação não é necessária para executar em diferentes implementações de fornecedores.
O que é objeto de valor?
O Value Object, também conhecido como Objetos de Transferência de Dados (DTO), é um padrão de design abstrato simples que lida com um contêiner de dados para armazenar dados com a finalidade de transferir dados entre camadas e camadas. Embora o termo mais preciso para esse padrão seja o Objeto de Transferência de Dados, devido a um erro na primeira versão do Core J2EE, ele foi introduzido como Objeto de Valor. Embora esse erro tenha sido corrigido na 2ª edição, esse nome se tornou popular e ainda é muito usado em vez de Objeto de transferência de dados (mas deve-se observar que o termo correto é Objeto de transferência de dados). O padrão de design do DTO é usado com beans de entidade, JDBC e JDO para corrigir problemas que ocorrem com relação ao isolamento e transações em aplicativos corporativos. É importante observar que esses são apenas titulares de dados simples usados para transferir dados entre o cliente e o banco de dados e não fornecem persistência de nenhum tipo. O DTO serve ao propósito de atuar como objetos serializáveis no EJB tradicional (como os beans de entidade anteriores ao 3.0 não são serializáveis). Em uma fase de montagem separada definida pelo DTO, todos os dados usados pela visualização são adquiridos e empacotados antes da liberação do controle na camada de apresentação.
Qual é a diferença entre JDO e Value Object?
O JDO é na verdade uma tecnologia de persistência usada para armazenar objetos Java nos bancos de dados, o que fornece comodidade aos desenvolvedores, manipulando todos os detalhes do nível de implementação e permitindo que os desenvolvedores se concentrem na codificação não específica do banco de dados. Porém, o Objeto de Valor representa um padrão de design abstrato (não uma tecnologia) que fornece um detentor de dados genérico conhecido como Objeto de Transferência de Dados que pode reter dados com a finalidade de transferir entre cliente e bancos de dados. O JDO fornece a facilidade de itens de dados persistentes, enquanto o Objeto de Valor trata apenas da manutenção de dados temporariamente durante o período de transferência de dados. Em outras palavras, o Value Object não fornece persistência.