Sadece sebattan bahsedersek, Serializablegerekli değildir Ama varlıkları yapmak en iyi uygulamadır Serializable.
Biz teşhir varsa domain/ entitiesdoğrudan kullanmak yerine, sunum katmanına maruz nesnelerin DTObiz uygulamak gerekir Bu durumda, Serializable. Bu etki alanı nesneleri, HTTPSessionönbelleğe alma / optimizasyon amacıyla depolanabilir . Bir http oturumu serileştirilebilir veya kümelenebilir. Ve aynı zamanda JVMörnekler arasında veri aktarımı için de gereklidir .
DTOKalıcılık katmanını ve hizmet katmanını ayırmak için kullandığımızda , etki alanı nesnelerini Serializableters üretken olarak işaretlemek ve " encapsulation" kuralını ihlal eder . Sonra bir anti-model haline gelir.
Bileşik tanımlayıcılar
Birincil anahtar sınıfı serileştirilebilir olmalıdır.
POJO Modelleri
Bir varlık örneği uzaktan ayrılmış bir nesne olarak kullanılacaksa, varlık sınıfı Serializablearabirimi uygulamalıdır .
Önbellek
Ek olarak, clusteredikinci bir seviye uyguluyorsanız cache, varlıklarınızın olması gerekir serializable. Tanımlayıcı, ikinci düzey bir önbellek girişi için anahtar olarak kullanılabileceğinden, Serializablebu bir JPA gereksinimi identifierolduğu için olmalıdır.
Ve varlıkları serileştirdiğimizde serialVersionUID, özel erişim değiştiriciyle açıkça sağladığınızdan emin olun . Çünkü bir serializablesınıf açıkça a bildirmezse serialVersionUID, serileştirme çalışma zamanı, serialVersionUIDJava (TM) Nesne Serileştirme Spesifikasyonu'nda açıklandığı gibi, sınıfın çeşitli yönlerine göre bu sınıf için varsayılan bir değer hesaplayacaktır . Varsayılan serialVersionUIDhesaplama, derleyici uygulamalarına bağlı olarak değişebilen sınıf ayrıntılarına karşı oldukça hassastır ve bu nedenle InvalidClassExceptionsseriyi kaldırma sırasında beklenmedik sonuçlara neden olabilir .