JDO frente a objeto de valor
JDO es una tecnología de persistencia de Java que se puede utilizar para almacenar POJO (Plain Old Java Objects) en bases de datos sin necesidad de comprender las implementaciones subyacentes de diferentes almacenes de datos. Objeto de valor (también conocido como Objeto de transferencia de datos) es un patrón de diseño abstracto que introduce el concepto de un contenedor de datos simple con el fin de transferir datos entre múltiples capas y niveles.
¿Qué es JDO?
JDO (Java Data Objects) proporciona un mecanismo para brindar persistencia a los objetos Java y el acceso a la base de datos. JDO es muy transparente porque permite a los desarrolladores de aplicaciones Java acceder a los datos subyacentes sin tener que escribir ningún código específico para las bases de datos. JDO se puede utilizar en varios niveles, incluidos Java Standard Edition, Web-tier y servidores de aplicaciones. JDO API es una alternativa a otras persistencias (mantener objetos después del aborto del programa) de objetos Java como Serialización, JDBC (Java DataBase Connectivity) y EJB CMP (Enterprise JavaBeans architecture Container Managed Persistence). JDO utiliza XML y mejora de bytecode. La principal ventaja de usar la API de JDO es que pueden almacenar datos sin necesidad de aprender un nuevo lenguaje de consulta como SQL (que depende del tipo de almacenamiento de datos). JDO es muy fácil de usar ya que los desarrolladores pueden enfocarse solo en su modelo de objetos de dominio. No solo esto, JDO optimiza el código por sí mismo según el acceso a los datos. Debido a que la API de JDO no es estricta en cuanto al tipo de almacén de datos, los desarrolladores de aplicaciones Java pueden utilizar la misma interfaz para almacenar objetos Java en cualquier almacén de datos, incluida la base de datos relacional, la base de datos de objetos o un XML. JDO es altamente portátil porque no se necesita modificación o recompilación para ejecutarse en implementaciones de diferentes proveedores.
¿Qué es el objeto de valor?
Value Object, también conocido como Data transfer Objects (DTO), es un patrón de diseño abstracto simple que se ocupa de un contenedor de datos para almacenar datos con el fin de transferir datos entre capas y niveles. Aunque el término más preciso para este patrón es Objeto de transferencia de datos, debido a un error en la primera versión de Core J2EE, se introdujo como Objeto de valor. Aunque este error se corrigió en la segunda edición, este nombre se hizo popular y todavía se usa mucho en lugar de Objeto de transferencia de datos (pero debe tenerse en cuenta que el término correcto es Objeto de transferencia de datos). El patrón de diseño DTO se usa con beans de entidad, JDBC y JDO para rectificar los problemas que ocurren con respecto al aislamiento y las transacciones en las aplicaciones empresariales. Es importante tener en cuenta que estos son solo soportes de datos simples que se utilizan para transferir datos entre el cliente y la base de datos y no proporcionan persistencia de ningún tipo. DTO tiene el propósito de actuar como objetos serializables en EJB tradicional (como beans de entidad antes de 3.0 no son serializables). En una fase de ensamblaje separada definida por DTO, todos los datos utilizados por la vista se adquieren y calculan antes de la liberación del control a la capa de presentación.
¿Cuál es la diferencia entre JDO y Value Object?
JDO es en realidad una tecnología de persistencia que se utiliza para almacenar objetos Java en bases de datos, lo que brinda comodidad a los desarrolladores al manejar todos los detalles del nivel de implementación y permitir que los desarrolladores se concentren en la codificación no específica de la base de datos. Sin embargo, el objeto de valor representa un patrón de diseño abstracto (no una tecnología) que proporciona un contenedor de datos genérico conocido como objeto de transferencia de datos que puede contener datos con el fin de transferirlos entre el cliente y las bases de datos. JDO proporciona la facilidad de elementos de datos persistentes, mientras que Value Object solo se ocupa de mantener los datos temporalmente durante el período de transferencia de datos. En otras palabras, Value Object no proporciona persistencia.