JDO срещу стойностен обект
JDO е технология за устойчивост на Java, която може да се използва за съхраняване на POJO (обикновени стари Java обекти) в бази данни, без да е необходимо да се разбират основните реализации на различни хранилища на данни. Стойностен обект (известен също като обект за прехвърляне на данни) е абстрактен дизайн, който въвежда концепцията за обикновен притежател на данни с цел прехвърляне на данни между множество слоеве и нива.
Какво е JDO?
JDO (Java Data Objects) предоставя механизъм за осигуряване на постоянство на Java обекти и достъп до бази данни. JDO е много прозрачен, защото позволява на разработчиците на Java приложения да имат достъп до основните данни, без да се налага да пишат код, специфичен за бази данни. JDO може да се използва на няколко нива, включително Java Standard Edition, уеб ниво и сървъри за приложения. JDO API е алтернатива на други постоянства (запазване на обекти след прекъсване на програмата) на Java обекти като Serialization, JDBC (Java DataBase Connectivity) и EJB CMP (Enterprise JavaBeans architecture Container Managed Persistence). JDO използва XML и подобрение на байт кода. Основното предимство на използването на JDO API е, че те могат да съхраняват данни, без да е необходимо да изучават нов език за заявки като SQL (който зависи от вида на съхранението на данни). JDO е много лесен за използване, тъй като разработчиците могат да се съсредоточат само върху своя домейн обектен модел. Не само това, JDO оптимизира кода сам според достъпа до данни. Тъй като JDO API не е строг по отношение на типа хранилище на данни, същият интерфейс може да се използва от разработчиците на Java приложения за съхраняване на Java обекти във всяко хранилище на данни, включително релационна база данни, обектна база данни или XML. JDO е много преносим, тъй като не е необходима модификация или повторно компилиране, за да работи на различни реализации на доставчици.
Какво е стойностен обект?
Value Object, известен още като обекти за пренос на данни (DTO), е прост абстрактен модел на проектиране, който се занимава с контейнер за данни за съхранение на данни с цел прехвърляне на данни между слоеве и нива. Въпреки че най-точният термин за този модел е Data Transfer Object, поради грешка в първата версия на Core J2EE той беше въведен като Value Object. Въпреки че тази грешка беше коригирана във второто издание, това име стана популярно и все още се използва широко вместо обект за прехвърляне на данни (но трябва да се отбележи, че правилният термин е обект за прехвърляне на данни). Шаблонът за проектиране на DTO се използва с компоненти на обекти, JDBC и JDO за коригиране на проблеми, възникващи по отношение на изолацията и транзакциите в корпоративните приложения. Важно е да се отбележи, че това са само прости притежатели на данни, използвани за прехвърляне на данни между клиента и базата данни и те не осигуряват постоянство от какъвто и да е вид. DTO служи за целта да действа като сериализуеми обекти в традиционния EJB (като компоненти на обекти преди 3.0 не могат да бъдат сериализирани). В отделна фаза на сглобяване, дефинирана от DTO, всички данни, използвани от изгледа, се придобиват и подреждат преди освобождаването на контролата към презентационния слой.
Каква е разликата между JDO и Value Object?
JDO всъщност е технология за постоянство, използвана за съхраняване на Java обекти в бази данни, която осигурява удобство на разработчиците, като обработва всички подробности за нивото на изпълнение и позволява на разработчиците да се съсредоточат върху кодиране, което не е специфично за базата данни. Но стойностният обект представлява абстрактен модел на проектиране (не технология), който предоставя общ притежател на данни, известен като обект за прехвърляне на данни, който може да съдържа данни с цел прехвърляне между клиент и бази данни. JDO предоставя възможност за запазване на елементи от данни, докато Value Object се занимава само с временно съхраняване на данни по време на периода на прехвърляне на данни. С други думи, стойностният обект не осигурява постоянство.