Jika kita hanya berbicara tentang kegigihan, Serializabletidak diperlukan. Tetapi merupakan praktik terbaik untuk membuat entitas Serializable.
Jika kita mengekspos domain/ entitiesobjek yang langsung terpapar ke lapisan presentasi, alih-alih menggunakan DTO, Dalam hal ini kita perlu menerapkan Serializable. Objek domain ini dapat disimpan HTTPSessionuntuk tujuan caching / optimisasi. Sesi http dapat diserialisasi atau dikelompokkan. Dan itu juga diperlukan untuk mentransfer data antar- JVMkeadaan.
Ketika kita gunakan DTOuntuk memisahkan lapisan kegigihan dan lapisan layanan, menandai objek domain sebagai Serializablekontra 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 Serializableantarmuka.
Cache
Selain itu, jika Anda menerapkan clusteredlevel kedua cachemaka entitas Anda harus serializable. Pengidentifikasi harus Serializablekarena itu adalah persyaratan JPA karena identifiermungkin digunakan sebagai kunci untuk entri cache tingkat kedua.
Dan ketika kita membuat serial entitas memastikan untuk memberikan eksplisit serialVersionUIDdengan pengubah akses pribadi. Karena jika suatu serializablekelas tidak secara eksplisit mendeklarasikan a serialVersionUID, maka runtime serialisasi akan menghitung serialVersionUIDnilai default untuk kelas tersebut berdasarkan berbagai aspek kelas, seperti yang dijelaskan dalam Spesifikasi Serialisasi Objek Java (TM). serialVersionUIDKomputasi default sangat sensitif terhadap detail kelas yang dapat bervariasi tergantung pada implementasi kompiler, dan dengan demikian dapat mengakibatkan hal yang tidak terduga InvalidClassExceptionsselama deserialisasi.