Nếu chúng ta chỉ nói về sự kiên trì, Serializable
thì không cần thiết Nhưng tốt nhất là tạo ra các thực thể Serializable
.
Nếu chúng ta đang phơi bày domain
/ entities
các đối tượng tiếp xúc trực tiếp với lớp trình bày, thay vì sử dụng DTO
, Trong trường hợp đó chúng ta cần thực hiện Serializable
. Các đối tượng miền này có thể được lưu trữ HTTPSession
cho mục đích lưu trữ / tối ưu hóa. Một phiên http có thể được nối tiếp hoặc phân cụm. Và nó cũng được yêu cầu để chuyển dữ liệu giữa các JVM
lần.
Khi chúng ta sử dụng DTO
để tách lớp lớp bảo trì và lớp dịch vụ, việc đánh dấu các đối tượng miền Serializable
sẽ phản tác dụng và sẽ vi phạm phạm lỗi encapsulation
. Sau đó, nó trở thành một mô hình chống.
Định danh tổng hợp
Lớp khóa chính phải được tuần tự hóa.
Mô hình POJO
Nếu một thực thể được sử dụng từ xa như một đối tượng tách rời, lớp thực thể phải thực hiện Serializable
giao diện.
Bộ nhớ cache
Thêm vào đó, nếu bạn đang thực hiện một clustered
mức độ thứ hai cache
sau đó tổ chức của bạn phải serializable
. Mã định danh phải là Serializable
vì đó là một yêu cầu của JPA vì identifier
có thể được sử dụng làm khóa cho mục nhập bộ đệm cấp hai.
Và khi chúng tôi tuần tự hóa các thực thể, hãy đảm bảo cung cấp rõ ràng serialVersionUID
với công cụ sửa đổi truy cập riêng. Bởi vì nếu một serializable
lớp không khai báo rõ ràng a serialVersionUID
, thì thời gian chạy tuần tự hóa sẽ tính toán một serialVersionUID
giá trị mặc định cho lớp đó dựa trên các khía cạnh khác nhau của lớp, như được mô tả trong Đặc tả tuần tự hóa đối tượng Java (TM). serialVersionUID
Tính toán mặc định rất nhạy cảm với các chi tiết lớp có thể thay đổi tùy thuộc vào việc triển khai trình biên dịch và do đó có thể dẫn đến bất ngờ InvalidClassExceptions
trong quá trình khử lưu huỳnh.