JDO va Value Object
JDO - bu turli xil ma'lumotlar do'konlarining asosiy ilovalarini tushunishga hojat qoldirmasdan POJO (Oddiy eski Java ob'ektlari) ni ma'lumotlar bazalarida saqlash uchun ishlatilishi mumkin bo'lgan Java qat'iylik texnologiyasi. Qiymat ob'ekti (ma'lumot uzatish ob'ekti sifatida ham tanilgan) mavhum dizayn namunasi bo'lib, u bir nechta qatlamlar va qatlamlar o'rtasida ma'lumotlarni uzatish uchun oddiy ma'lumotlar ushlagichi tushunchasini taqdim etadi.
JDO nima?
JDO (Java Data Objects) Java ob'ektlari va ma'lumotlar bazasiga kirish uchun qat'iylikni ta'minlash mexanizmini taqdim etadi. JDO juda shaffof, chunki u Java dasturlarini ishlab chiquvchilarga ma'lumotlar bazalariga xos kod yozmasdan asosiy ma'lumotlarga kirish imkonini beradi. JDO Java Standard Edition, Web-daraja va dastur serverlari kabi bir necha darajalarda ishlatilishi mumkin. JDO API Serializatsiya, JDBC (Java DataBase Connectivity) va EJB CMP (Enterprise JavaBeans arxitekturasi Container Managed Persistence) kabi Java ob'yektlarining boshqa doimiyligiga (dastur bekor qilingandan keyin ob'ektlarni saqlash) muqobildir. JDO XML va bayt kodini yaxshilashdan foydalanadi. JDO API-dan foydalanishning asosiy afzalligi shundaki, ular SQL kabi yangi so'rovlar tilini o'rganmasdan ma'lumotlarni saqlashi mumkin (bu ma'lumotlarni saqlash turiga bog'liq). JDO-dan foydalanish juda oson, chunki ishlab chiquvchilar faqat o'zlarining domen ob'ekt modeliga e'tibor berishlari mumkin. Faqat bu emas, JDO ma'lumotlarga kirishga qarab kodni o'zi optimallashtiradi. JDO API ma'lumotlar do'koni turiga qat'iy emasligi sababli, xuddi shu interfeysdan java ilovasini ishlab chiquvchilar java ob'ektlarini istalgan ma'lumotlar do'koniga, shu jumladan relyatsion ma'lumotlar bazasi, ob'ektlar ma'lumotlar bazasi yoki XMLga saqlash uchun foydalanishlari mumkin. JDO juda ko'chma, chunki turli sotuvchi ilovalarida ishlash uchun o'zgartirish yoki qayta kompilyatsiya qilish kerak emas.
Qiymat obyekti nima?
Qiymat ob'ekti, shuningdek, ma'lumotlarni uzatish ob'ektlari (DTO) sifatida ham tanilgan, qatlamlar va qatlamlar o'rtasida ma'lumotlarni uzatish maqsadida ma'lumotlarni saqlash uchun ma'lumotlar konteyneri bilan shug'ullanadigan oddiy mavhum dizayn naqshidir. Ushbu naqsh uchun eng aniq atama Ma'lumotlarni uzatish ob'ekti bo'lsa-da, Core J2EE ning birinchi versiyasidagi xato tufayli u Value Object sifatida taqdim etildi. Ushbu xato 2-nashrda tuzatilgan bo'lsa-da, bu nom mashhur bo'lib ketdi va hali ham Ma'lumotlarni uzatish ob'ekti o'rniga ko'p ishlatiladi (lekin shuni ta'kidlash kerakki, to'g'ri atama Ma'lumotlarni uzatish ob'ekti). DTO dizayn namunasi korporativ ilovalarda izolyatsiya va tranzaktsiyalar bilan bog'liq muammolarni tuzatish uchun sub'ekt fasollari, JDBC va JDO bilan qo'llaniladi. Shuni ta'kidlash kerakki, bular mijoz va ma'lumotlar bazasi o'rtasida ma'lumotlarni uzatish uchun ishlatiladigan oddiy ma'lumotlar egalari va ular hech qanday turg'unlikni ta'minlamaydi. DTO an'anaviy EJB da Serializatsiya qilinadigan ob'ektlar sifatida ishlash maqsadiga xizmat qiladi (3.0 seriyalash mumkin emas). DTO tomonidan belgilangan alohida yig'ish bosqichida ko'rinish tomonidan foydalaniladigan barcha ma'lumotlar nazorat elementi taqdimot qatlamiga chiqarilishidan oldin olinadi va birlashtiriladi.
JDO va Value Object oʻrtasidagi farq nima?
JDO aslida Java ob'ektlarini ma'lumotlar bazalarida saqlash uchun foydalaniladigan qat'iylik texnologiyasi bo'lib, u dasturlash darajasidagi barcha tafsilotlarni ko'rib chiqish orqali ishlab chiquvchilarga qulaylik yaratadi va ishlab chiquvchilarga ma'lumotlar bazasiga xos bo'lmagan kodlashga e'tibor qaratish imkonini beradi. Biroq, Qiymat ob'ekti mavhum dizayn naqshini (texnologiya emas) ifodalaydi, bu mijoz va ma'lumotlar bazalari o'rtasida uzatish maqsadida ma'lumotlarni saqlashi mumkin bo'lgan Ma'lumotlarni uzatish ob'ekti deb nomlanuvchi umumiy ma'lumotlar ushlagichini ta'minlaydi. JDO doimiy ma'lumotlar elementlarini ta'minlaydi, Value Object esa faqat ma'lumotlarni uzatish davrida vaqtinchalik ma'lumotlarni saqlash bilan shug'ullanadi. Boshqacha qilib aytganda, Value Object doimiylikni ta'minlamaydi.