Transient in Java

Mohammad Irfan 12 Oktober 2023
  1. Transiente Variable in Java erstellen
  2. Transiente Variable in Hibernate-Entitätsklasse in Java erstellen
Transient in Java

In diesem Tutorial wird eingeführt, was das Schlüsselwort transient ist und wie es in Java-Anwendungen verwendet wird.

Transient ist ein Schlüsselwort in Java, das verwendet wird, um eine Variable als nicht serialisierbar zu markieren. Es wird verwendet, wenn wir ein Objekt serialisieren.

Serialisierung ist der Prozess der Umwandlung eines Java-Objekts in einen Bytestrom. Es kann also in einer Datei persistiert werden, und wenn wir vermeiden möchten, dass ein Feld in einer Datei persistiert, markieren wir diese Transiente.

Wir können keine Methode als vorübergehend markieren, sondern nur Felder. Lassen Sie uns mit einigen Beispielen verstehen.

Um eine Klasse serialisierbar zu machen, müssen wir zuerst das Interface Seriablizable implementieren und dann das Schlüsselwort transient mit Variablen verwenden. Unten ist ein serialisierbares Klassenbeispiel, das eine Serializable-Schnittstelle implementiert. Es markiert jedoch keine Feldtransienten.

class Student implements Serializable {
  /*
   *  non- transient fields
   */
  int id;
  String name;
  String email;
}

Transiente Variable in Java erstellen

In diesem Beispiel haben wir eine Klasse Student, die die Schnittstelle Serializable implementiert und die E-Mail als transient markiert. Wenn wir also ihre Zustände in eine Datei schreiben, werden nur name und id in die Datei geschrieben. Die email-Daten werden nicht geschrieben. Sie können dies überprüfen, indem Sie dieselbe Datei lesen und die Daten auf der Konsole anzeigen. Siehe das Beispiel unten.

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class SimpleTesting {
  public static void main(String[] args) throws IOException, ClassNotFoundException {
    Student student = new Student();
    student.setId(10);
    student.setName("Rohan");
    student.setEmail("rohan@gmail.com");

    // Writing to a file
    FileOutputStream fileStream = new FileOutputStream("student.txt");
    ObjectOutputStream outStream = new ObjectOutputStream(fileStream);
    outStream.writeObject(student);
    outStream.flush();
    outStream.close();
    fileStream.close();

    // Reading file
    ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("student.txt"));
    student = (Student) inputStream.readObject();
    System.out.println(student.id + " " + student.name + " " + student.email);
    System.out.println(Student.getSerialversionuid());
    inputStream.close();
  }
}

class Student implements Serializable {
  private static final long serialVersionUID = 1L;
  int id;
  String name;
  transient String email;

  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getEmail() {
    return email;
  }
  public void setEmail(String email) {
    this.email = email;
  }
  public static long getSerialversionuid() {
    return serialVersionUID;
  }
}

Ausgabe:

10 Rohan null 1

Sie können in der Ausgabe feststellen, dass die E-Mail null ist.

Transiente Variable in Hibernate-Entitätsklasse in Java erstellen

Wenn Sie mit Ruhezustand arbeiten und einige Variablen/Felder vorübergehend machen möchten, verwenden Sie den Modifikator @Transient. Das Schreiben von Daten in die Datenbanktabelle wird übersprungen. Diese Anmerkung ist nur hilfreich, wenn Sie mit Ruhezustand arbeiten. Da es sich um eine Anmerkung handelt, müssen Sie alle erforderlichen JARs in Ihr Projekt importieren. Siehe das Beispiel unten.

@Entity
class Student implements Serializable {
  @Id int id;
  String name;
  @Transient String email; // transient

  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getEmail() {
    return email;
  }
  public void setEmail(String email) {
    this.email = email;
  }
}