Jika kita hanya berbicara tentang kegigihan, Serializable
tidak diperlukan. Tetapi merupakan praktik terbaik untuk membuat entitas Serializable
.
Jika kita mengekspos domain
/ entities
objek yang langsung terpapar ke lapisan presentasi, alih-alih menggunakan DTO
, Dalam hal ini kita perlu menerapkan Serializable
. Objek domain ini dapat disimpan HTTPSession
untuk tujuan caching / optimisasi. Sesi http dapat diserialisasi atau dikelompokkan. Dan itu juga diperlukan untuk mentransfer data antar- JVM
keadaan.
Ketika kita gunakan DTO
untuk memisahkan lapisan kegigihan dan lapisan layanan, menandai objek domain sebagai Serializable
kontra produktif dan akan melanggar " encapsulation
". Maka itu menjadi anti-pola.
Pengidentifikasi komposit
Kelas kunci utama harus serial.
Model POJO
Jika instance entitas akan digunakan dari jarak jauh sebagai objek terpisah, kelas entitas harus mengimplementasikan Serializable
antarmuka.
Cache
Selain itu, jika Anda menerapkan clustered
level kedua cache
maka entitas Anda harus serializable
. Pengidentifikasi harus Serializable
karena itu adalah persyaratan JPA karena identifier
mungkin digunakan sebagai kunci untuk entri cache tingkat kedua.
Dan ketika kita membuat serial entitas memastikan untuk memberikan eksplisit serialVersionUID
dengan pengubah akses pribadi. Karena jika suatu serializable
kelas tidak secara eksplisit mendeklarasikan a serialVersionUID
, maka runtime serialisasi akan menghitung serialVersionUID
nilai default untuk kelas tersebut berdasarkan berbagai aspek kelas, seperti yang dijelaskan dalam Spesifikasi Serialisasi Objek Java (TM). serialVersionUID
Komputasi default sangat sensitif terhadap detail kelas yang dapat bervariasi tergantung pada implementasi kompiler, dan dengan demikian dapat mengakibatkan hal yang tidak terduga InvalidClassExceptions
selama deserialisasi.