Serialization trong Java
Tuần tự hoá trong java hay tuần tự hóa trong java là một cơ chế để ghi trạng thái của một đối tượng vào một byte stream.
Bạn đang xem: Tại sao java có các trường tạm thời?
Nó chủ yếu được sử dụng trong các công nghệ Hibernate, RMI, JPA, EJB và JMS.
Hoạt động ngược lại của serialization được gọi là giải phóng mặt bằng.
Ưu điểm của Serialization trong java
Nó chủ yếu được sử dụng để truyền trạng thái của đối tượng qua mạng (được biết đến như marshaling).

Kết quả không có giá trị company, do thuộc tính này là tĩnh.
Xem thêm: Bà Bầu Ăn Mít Có Tốt Cho Bà Bầu Không ? Những Trường Hợp Mẹ Bầu Không Được Ăn Mít
Java Serialization với array hoặc collection
Trong trường hợp mảng (array) hoặc tập hợp (collection), tất cả các đối tượng của array hoặc collection phải được tuần tự hóa (Serializable). Nếu bất kỳ đối tượng không phải là serializable, thì quá trình serialization sẽ không thành công.
Externalizable trong java
Giao diện Có thể ngoại hóa cung cấp khả năng viết trạng thái của một đối tượng vào một byte stream ở định dạng nén. Nó không phải là một giao diện đánh dấu.
Giao diện Có thể ngoại hóa cung cấp hai phương thức:
public void writeExternal (ObjectOutput out) ném IOExceptionpublic void readExternal (ObjectInput in) ném IOException
Từ khóa transient trong java
Nếu không muốn nối tiếp bất kỳ thuộc tính nào của một lớp, bạn có thể đánh dấu nó với từ khóa tạm thời.
Xem thêm: Vc Red Là Gì – Cách Loại Bỏ Như Thế Nào
Ví dụ, khai báo một lớp Student, có ba thành viên dữ liệu là id, name và age. Lớp Student implements giao tiếp Serializable, tất cả các giá trị sẽ được tuần tự nhưng nếu bạn không muốn tuần tự cho một giá trị, ví dụ: age thì bạn có thể khai báo age với từ khóa transient.
package com.balkanpoliticalclub.net.serialize; import java.io.Serializable; public class Student thực hiện Serializable {private static final long serialVersionUID = -266706354210367639L; private int id; private String name; private transient int age; public Student (int id, Tên chuỗi, int age) {this.id = id; this.name = name; this.age = age;}
Overridepublic String toString () {return “Sinh viên
package com.balkanpoliticalclub.net.bytestream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; public class SerializationTransientExample {public static void main (String args) throws Exception {ObjectOutputStream oos = null; try {oos = new ObjectOutputStream (new FileOutputStream (“data / student.txt”)); Student student = new Student (1, “balkanpoliticalclub.net”, 28); oos.writeObject (student); oos.flush (); } catch (IOException ex) {ex.printStackTrace ();} last {oos.close ();} System.out.println (“success …”);}} Ví dụ sử dụng ObjectInputStream để đọc sinh viên đối tượng tập tin
package com.balkanpoliticalclub.net.bytestream; import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectInputStream; public class DeserializationTransientExample {public static void main (String args) throws Exception {ObjectInputStream ois = null; try {ois = new ObjectInputStream (new FileInputStream (“data / student.txt”)); Student student = (Student) ois.readObject (); System.out.println (student);} catch (IOException ex) {ex. printStackTrace ();} last {ois.close ();}}} Thực thi chương trình SerializationTransientExample, sau đó thực thi chương trình DeserializationTransientExample. Ta có kết quả như sau:
Chuyên mục: Review tổng hợp