VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test
Java Cơ Bản Các Khái Niệm Java OOPs Java String Xử Lý Ngoại Lệ Các Lớp Lồng Nhau Đa Luồng (Multithreading)

Java I/O

Java Input/Output Đọc ghi file trong java Lớp Console Lớp FilePermission Ghi file trong java với lớp FileOutputStream Đọc file trong java với lớp FileInputStream Ghi file trong java với lớp BufferedOutputStream Đọc file trong java với lớp BufferedInputStream Đọc file trong java với lớp SequenceInputStream Ghi file trong java với lớp ByteArrayOutputStream Đọc file trong java với lớp ByteArrayInputStream Ghi file trong java với lớp DataOutputStream Đọc file trong java với lớp DataInputStream Ghi file trong java với lớp FileWriter Đọc file trong java với lớp FileReader Ghi file trong java với lớp FilteroutputStream Đọc file trong java với lớp FilterInputStream Ghi file trong java với lớp BufferedWriter Đọc file trong java với lớp BufferedReader Đọc file trong java với lớp CharArrayReader Ghi file trong java với lớp CharArrayWriter Ghi file trong java với lớp PrintStream Ghi file trong java với lớp PrintWriter Lớp PushbackInputStream trong java Lớp PushbackReader trong java Ghi file trong java với lớp StringWriter Đọc file trong java với lớp StringReader

Java Serialization

Serialization trong java Lớp ObjectOutputStream Lớp ObjectInputStream Từ khóa transient trong java
Ví Dụ Java I/O Java AWT Java Swing Lập Trình Mạng Với Java Java Date Chuyển Đối Kiểu Dữ Liệu Java Collections Java JDBC Các Tính Năng Mới Trong Java Bài Tập Java Có Lời Giải Câu Hỏi Phỏng Vấn Java
1 / 3
❮ ❯

Serialization trong java


Đọc ghi file trong java
Lớp ObjectOutputStream trong java

Nội dung chính

  • 1. Serialization trong java
    • java.io.Serializable interface
  • 2. Deserialization trong java
  • 3. Java Serialization với thừa kế (Mối quan hệ IS-A)
  • 4. Java Serialization với sự kết hợp (Mối quan hệ HAS-A)
  • 5. Java Serialization với thành viên dữ liệu static
  • 6. Java Serialization với array hoặc collection
  • 7. Externalizable trong java
  • 8. Từ khóa transient trong java

1. Serialization trong java

Tuần tự hoá trong java hay serialization 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.

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à deserialization.

Ư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).

Serialization trong java

java.io.Serializable interface

Serializable là một giao diện đánh dấu (không có thành viên dữ liệu và phương thức). Nó được sử dụng để "đánh dấu" các lớp java để các đối tượng của các lớp này có thể nhận được khả năng nhất định. Cloneable và Remote cũng là những interface đánh dấu.

Nó phải được implements bởi lớp mà đối tượng của nó bạn muốn persist, bạn có thể xem thêm về đối tượng persistent là gì?

Lớp String và tất cả các lớp wrapper implements giao tiếp java.io.Serializable theo mặc định.

Hãy xem ví dụ dưới đây:

import java.io.Serializable;

public class Student implements Serializable {
    int id;
    String name;

    public Student(int id, String name) {
        this.id = id;
        this.name = name;
    }
}

Trong ví dụ trên, lớp Student implements giao tiếp Serializable. Bây giờ các đối tượng của nó có thể được chuyển đổi thành stream.

Tìm hiểu bài học về lớp ObjectOutputStream trong java để hiểu rõ hơn về serialization trong java.


2. Deserialization trong java

Deserialization là quá trình tái thiết lại các đối tượng từ trạng thái serialized.Đây là hoạt động ngược lại của serialization.

Tìm hiểu bài học về lớp ObjectInputStream trong java để hiểu rõ hơn về serialization trong java.


3. Java Serialization với thừa kế (Mối quan hệ IS-A)

Nếu một lớp implements giao tiếp Serializable thì tất cả các lớp con của nó cũng sẽ được serializable. Hãy xem ví dụ dưới đây:

public class Person {
    int id;
    String name;

    Person(int id, String name) {
        this.id = id;
        this.name = name;
    }
}
public class Student extends Person {
    String course;
    int fee;

    public Student(int id, String name, String course, int fee) {
        super(id, name);
        this.course = course;
        this.fee = fee;
    }
}

Các bạn hãy thực hành ghi và đọc với lớp ObjectOutputStream trong java và lớp ObjectInputStream trong java về Java Serialization với thừa kế nhé.


4. Java Serialization với sự kết hợp (Mối quan hệ HAS-A)

Nếu một lớp có một tham chiếu của một lớp khác, tất cả các tham chiếu phải được implements giao tiếp Serializable nếu không quá trình serialization sẽ không được thực hiện. Trong trường hợp đó, NotSerializableException được ném ra khi chạy.

public class Address {
    String addressLine, city, state;

    public Address(String addressLine, String city, String state) {
        this.addressLine = addressLine;
        this.city = city;
        this.state = state;
    }
}
import java.io.Serializable;

public class Student implements Serializable {
    int id;
    String name;
    Address address;// HAS-A

    public Student(int id, String name) {
        this.id = id;
        this.name = name;
    }
}

Vì Address không implements giao tiếp Serializable nên bạn không thể serialize thể hiện của lớp Student.

Lưu ý: Tất cả các đối tượng trong một đối tượng phải được impements giao tiếp Serializable.

Các bạn hãy thực hành ghi và đọc với lớp ObjectOutputStream trong java và lớp ObjectInputStream trong java về Java Serialization với sự kết hợp nhé.


5. Java Serialization với thành viên dữ liệu static

Nếu có bất kỳ thành viên dữ liệu static trong một lớp, nó sẽ không được serialized bởi vì static là một phần của lớp chứ không phải đối tượng.

import java.io.Serializable;

public class Employee implements Serializable {
    int id;
    String name;
    static String company = "VietTuts";// it won't be serialized

    public Employee(int id, String name) {
        this.id = id;
        this.name = name;
    }
}

6. Java Serialization với array hoặc collection

Quy tắc: Trong trường hợp mảng hoặc bộ sưu tập, tất cả các đối tượng củaarray hoặc collection phải được tuần tự hóa. Nếu bất kỳ đối tượng không phải là serialiizable, serialization sẽ không thành công.

7. Externalizable trong java

Giao tiếp Externalizable 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 tiếp Externalizable cung cấp hai phương thức:

  • public void writeExternal(ObjectOutput out) throws IOException
  • public void readExternal(ObjectInput in) throws IOException

8. Từ khóa transient trong java

Nếu bạn không muốn serialize bất kỳ thành viên dữ liệu của một lớp học, bạn có thể đánh dấu nó với từ khóa transient

Xem bài học tiếp theo để biết thêm chi tiết.

Bài tiếp theo: Lớp ObjectOutputStream trong java

Đọc ghi file trong java
Lớp ObjectOutputStream trong java

Recent Updates

Xuất dữ liệu ra màn hình console trong JavaCài đặt môi trường JavaJava Swing - Bài tập quản lý sinh viên trong javaLinkedList trong javaArrayList trong javaBài tập java có lời giảiXác thực dữ liệu (Data Validation) trong ExcelGiới thiệu các hàm có sẵn trong ExcelSheet Options trong ExcelHướng dẫn lập trình Python với PyCharm Community EditionHướng dẫn lập trình Python với Visual Studio CodeGiới thiệu CSS3Sắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml