Sadece sebattan bahsedersek, Serializable
gerekli değildir Ama varlıkları yapmak en iyi uygulamadır Serializable
.
Biz teşhir varsa domain
/ entities
doğrudan kullanmak yerine, sunum katmanına maruz nesnelerin DTO
biz 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 .
DTO
Kalıcılık katmanını ve hizmet katmanını ayırmak için kullandığımızda , etki alanı nesnelerini Serializable
ters ü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ı Serializable
arabirimi uygulamalıdır .
Önbellek
Ek olarak, clustered
ikinci 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, Serializable
bu bir JPA gereksinimi identifier
olduğ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 serializable
sınıf açıkça a bildirmezse serialVersionUID
, serileştirme çalışma zamanı, serialVersionUID
Java (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 serialVersionUID
hesaplama, derleyici uygulamalarına bağlı olarak değişebilen sınıf ayrıntılarına karşı oldukça hassastır ve bu nedenle InvalidClassExceptions
seriyi kaldırma sırasında beklenmedik sonuçlara neden olabilir .