Ketika seseorang berbicara tentang menghidrasi suatu benda, apa artinya itu?
Saya melihat proyek Java yang disebut Hydrate di web yang mengubah data antara representasi yang berbeda (RDMS ke OOPS ke XML). Apakah ini arti umum dari hidrasi objek; untuk mengubah data antar representasi? Bisakah itu berarti merekonstruksi hierarki objek dari representasi yang disimpan?
Jawaban:
Sehubungan dengan istilah hidrat yang lebih umum
Menghidrasi suatu objek adalah mengambil objek yang ada di memori, yang belum mengandung data domain apa pun (data "nyata"), dan kemudian mengisinya dengan data domain (seperti dari database, dari jaringan, atau dari file sistem).
Dari komentar Erick Robertson tentang jawaban ini:
Jika Anda tidak perlu khawatir tentang kinerja terik, dan Anda tidak men-debug optimisasi kinerja yang ada di internal API akses data, maka Anda mungkin tidak perlu berurusan dengan hidrasi secara eksplisit. Anda biasanya akan menggunakan deserialization sehingga Anda dapat menulis lebih sedikit kode. Beberapa API akses data tidak memberi Anda opsi ini, dan dalam kasus-kasus itu Anda juga harus secara eksplisit memanggil langkah hidrasi sendiri.
Untuk sedikit lebih detail tentang konsep Hidrasi, lihat jawaban Erick Robertson pada pertanyaan yang sama.
Sehubungan dengan proyek Java disebut hidrat
Anda bertanya tentang kerangka kerja ini secara khusus, jadi saya memeriksanya.
Sejauh yang saya tahu, saya tidak berpikir proyek ini menggunakan kata "hidrat" dalam arti yang sangat umum. Saya melihat penggunaannya dalam judul sebagai perkiraan sinonim untuk "serialisasi". Seperti dijelaskan di atas, penggunaan ini tidak sepenuhnya akurat:
Lihat: http://en.wikipedia.org/wiki/Serialization
Saya tidak dapat menemukan alasan di balik nama mereka langsung di FAQ Hydrate , tetapi saya mendapat petunjuk tentang niat mereka. Saya pikir mereka memilih nama "Hydrate" karena tujuan perpustakaan mirip dengan kerangka kerja Hibernate yang mirip suara populer , tapi itu dirancang dengan alur kerja yang berlawanan dalam pikiran.
Sebagian besar ORM, termasuk Hibernate, mengambil pendekatan berorientasi objek-model dalam memori, dengan basis data mengambil pertimbangan kedua. Sebaliknya pustaka Hydrate mengambil pendekatan berorientasi database-skema, melestarikan struktur data relasional Anda dan membiarkan program Anda bekerja di atasnya dengan lebih bersih.
Secara metaforis, masih sehubungan dengan nama perpustakaan ini: Hydrate seperti "membuat sesuatu siap digunakan" (seperti re-hydrating Dried Foods ). Ini adalah kebalikan metaforis dari Hibernate , yang lebih seperti "meletakkan sesuatu untuk musim dingin" (seperti Hibernasi Hewan ).
Keputusan untuk menamai perpustakaan Hydrate, sejauh yang saya tahu, tidak peduli dengan istilah pemrograman komputer generik "hidrat".
Saat menggunakan istilah pemrograman komputer generik "hidrat", optimisasi kinerja biasanya merupakan motivasi (atau men-debug optimisasi yang ada). Bahkan jika perpustakaan mendukung kontrol granular tentang kapan dan bagaimana objek diisi dengan data, waktu dan kinerja tampaknya tidak menjadi motivasi utama untuk nama atau fungsi perpustakaan. Perpustakaan tampaknya lebih peduli dengan memungkinkan pemetaan ujung-ke-ujung dan pelestarian skema.
sumber
deserialization == instantiation + hydration
@foo
tidak diperlukan ketika menanggapi penulis posting.Hidrasi mengacu pada proses mengisi objek dengan data. Objek yang belum terhidrasi telah dipakai dan mewakili entitas yang memiliki data, tetapi data belum dimuat ke dalam objek. Ini adalah sesuatu yang dilakukan karena alasan kinerja.
Selain itu, istilah hidrasi digunakan ketika membahas rencana untuk memuat data dari basis data atau sumber data lainnya. Berikut ini beberapa contohnya:
Anda bisa mengatakan bahwa suatu objek terhidrasi sebagian ketika Anda hanya memuat beberapa bidang ke dalamnya, tetapi tidak semuanya. Ini dapat dilakukan karena bidang-bidang lain tidak diperlukan untuk operasi Anda saat ini. Jadi tidak ada alasan untuk membuang bandwidth dan siklus CPU memuat, mentransfer, dan mengatur data ini ketika itu tidak akan digunakan.
Selain itu, ada beberapa ORM, seperti Doctrine, yang tidak menghidrasi objek ketika mereka dipakai, tetapi hanya ketika data diakses di objek itu. Ini adalah salah satu metode yang membantu untuk tidak memuat data yang tidak akan digunakan.
sumber
Meskipun ini agak redundan seperti yang disebutkan Merlyn, dalam pengalaman saya itu hanya merujuk pada mengisi / mengisi objek, bukan membuat / menciptakannya, jadi itu adalah kata yang berguna ketika Anda harus tepat.
sumber
deserialization == instantiation + hydration
).Ini adalah pertanyaan yang cukup lama, tetapi tampaknya masih ada kebingungan tentang arti dari istilah-istilah berikut. Semoga ini akan ambigu.
Hidrat
Ketika Anda melihat deskripsi yang mengatakan hal-hal seperti, "objek yang menunggu data, sedang menunggu untuk terhidrasi", itu membingungkan dan menyesatkan. Objek tidak menunggu hal-hal, dan hidrasi hanyalah tindakan mengisi objek dengan data.
Menggunakan JavaScript sebagai contoh:
Apa pun yang menambah nilai
obj
adalah "menghidrasi" itu. Saya hanya menggunakanObject.assign()
contoh ini.Karena istilah "cerita bersambung" dan "deserialisasi" juga disebutkan dalam jawaban lain, berikut adalah contoh untuk membantu mengaburkan makna konsep-konsep tersebut dari hidrasi:
Serialkan
Deserialize
sumber