JDO enfront de l'objecte de valor
JDO és una tecnologia de persistència Java que es pot utilitzar per emmagatzemar POJO (Plain Old Java Objects) a bases de dades sense necessitat d'entendre les implementacions subjacents de diferents magatzems de dades. L'objecte de valor (també conegut com a objecte de transferència de dades) és un patró de disseny abstracte que introdueix el concepte d'un simple titular de dades amb la finalitat de transferir dades entre diverses capes i nivells.
Què és JDO?
JDO (Java Data Objects) proporciona un mecanisme per oferir persistència als objectes Java i l'accés a la base de dades. JDO és molt transparent perquè permet als desenvolupadors d'aplicacions Java accedir a les dades subjacents sense haver d'escriure cap codi específic de les bases de dades. JDO es pot utilitzar en diversos nivells, com ara Java Standard Edition, nivell web i servidors d'aplicacions. L'API JDO és una alternativa a altres persistències (mantenint objectes després de l'avortament del programa) d'objectes Java com ara Serialization, JDBC (Java DataBase Connectivity) i EJB CMP (Enterprise JavaBeans architecture Container Managed Persistence). JDO utilitza XML i millora del bytecode. El principal avantatge d'utilitzar l'API JDO és que poden emmagatzemar dades sense necessitat d'aprendre un nou llenguatge de consulta com ara SQL (que depèn del tipus d'emmagatzematge de dades). JDO és molt fàcil d'utilitzar, ja que els desenvolupadors només poden centrar-se en el seu model d'objectes de domini. No només això, JDO optimitza el codi per si mateix segons l'accés a les dades. Com que l'API JDO no és estricta pel que fa al tipus de magatzem de dades, els desenvolupadors d'aplicacions Java poden utilitzar la mateixa interfície per emmagatzemar objectes java a qualsevol magatzem de dades, inclosa la base de dades relacional, la base de dades d'objectes o un XML. JDO és altament portàtil perquè no cal modificar ni recompilar per executar-se en diferents implementacions de proveïdors.
Què és l'objecte de valor?
L'objecte Value també conegut com a objectes de transferència de dades (DTO) és un patró de disseny abstracte senzill que tracta d'un contenidor de dades per contenir dades amb la finalitat de transferir dades entre capes i nivells. Tot i que el terme més precís per a aquest patró és l'objecte de transferència de dades, a causa d'un error a la primera versió de Core J2EE es va introduir com a objecte de valor. Tot i que aquest error es va corregir a la 2a edició, aquest nom es va popularitzar i encara s'utilitza molt en lloc d'Objecte de transferència de dades (però cal tenir en compte que el terme correcte és Objecte de transferència de dades). El patró de disseny DTO s'utilitza amb beans d'entitat, JDBC i JDO per rectificar els problemes que es produeixen pel que fa a l'aïllament i les transaccions a les aplicacions empresarials. És important tenir en compte que només són simples titulars de dades que s'utilitzen per transferir dades entre el client i la base de dades i que no proporcionen cap mena de persistència. DTO té el propòsit d'actuar com a objectes serializables en EJB tradicional (com a beans d'entitat abans de 3.0 no són serializables). En una fase de muntatge independent definida per DTO, totes les dades utilitzades per la vista s'adquireixen i s'agrupen abans de l'alliberament del control a la capa de presentació.
Quina diferència hi ha entre JDO i Value Object?
JDO és en realitat una tecnologia de persistència que s'utilitza per emmagatzemar objectes Java a bases de dades que proporciona comoditat als desenvolupadors en gestionar tots els detalls del nivell d'implementació i permetent als desenvolupadors centrar-se en la codificació no específica de la base de dades. Però, l'objecte de valor representa un patró de disseny abstracte (no una tecnologia) que proporciona un titular de dades genèric conegut com a objecte de transferència de dades que pot contenir dades amb el propòsit de transferir-les entre el client i les bases de dades. JDO ofereix la possibilitat de mantenir elements de dades, mentre que Value Object només s'ocupa de conservar les dades temporalment durant el període de transferència de dades. En altres paraules, Value Object no proporciona persistència.