Saya pikir ini subjektif dan tergantung pada desain Anda.
Sebagian besar meskipun ini tampaknya merupakan desain yang berasal dari rekaman aktif . Dalam catatan aktif, entitas Anda memiliki metode untuk melakukan operasi basis data dan karenanya juga harus mengetahui pengenal basis datanya.
Saat menggunakan pola lain seperti repositori dengan mapper data, menyimpan data ini di objek menjadi tidak perlu dan mungkin tidak pantas.
Ambil contoh sebuah Person
objek. Saya diberi nama yang mungkin unik atau tidak unik di dalam keluarga. Seiring bertambahnya populasi, nama-nama yang lebih besar tidak lagi unik sehingga kami telah membuat pengidentifikasi pengganti untuk sistem yang semakin besar. Contohnya termasuk: SIM saya, dan nomor jaminan sosial. Saya tidak terlahir untuk diberi id, semua id ini harus dilamar.
Sebagian besar tidak membuat kunci primer yang baik untuk perangkat lunak, karena tidak universal. Setidaknya tidak di luar sistem spesifik mereka, SSN jelas unik, dan konsisten, untuk Administrasi Jaminan Sosial. Karena kami biasanya bukan penyedia informasi ini, Anda tidak akan memanggil mereka id
melainkan data yang mereka wakili, misalnya SSN
. Kadang-kadang bahkan berisi objek yang dikomposisikan penuh seperti DriversLicense
yang bisa berisi semua informasi yang dilakukan SIM.
Oleh karena itu, semua id umum adalah kunci pengganti dalam sistem, dan dapat diganti dengan dalam referensi memori, hanya berisi id untuk memudahkan pencarian dan penyimpanan catatan.
Karena sebuah id
bukan bagian dari data konseptual, saya ragu bahwa itu (umumnya) termasuk dalam objek, karena tidak berasal dari domain. Sebaliknya itu harus dipertahankan untuk tujuannya yaitu untuk mengidentifikasi objek yang tidak memiliki cara lain untuk mewakili identitas yang unik. Ini bisa dilakukan dalam repositori / koleksi dengan mudah.
Dalam perangkat lunak jika Anda perlu mewakili objek sebagai daftar, atau bertahan, Anda dapat melakukannya dari objek repositori / koleksi, atau objek lain yang terkait dengannya. Saat meneruskan ke Pemeta Data (jika terpisah), Anda bisa lewat .update( id, obj )
.
Penafian : Saya belum mencoba membangun sistem yang tidak mengandung id di dalam entitas dan dengan demikian dapat membuktikan bahwa saya salah.