Idempotente en Java

Sheeraz Gul 12 octubre 2023
  1. Idempotente en Java
  2. Métodos idempotentes en Java
Idempotente en Java

Idempotente significa que podemos aplicar una operación varias veces, pero el resultado es siempre el mismo. Por ejemplo, no importa con qué frecuencia llamemos a un método idempotente; el resultado siempre será el mismo.

Este tutorial demuestra el uso de idempotente en Java.

Idempotente en Java

Como se mencionó anteriormente, los métodos idempotentes devuelven los mismos resultados cada vez. Por ejemplo, x=1; es idempotente porque devuelve 1 cada vez, pero x++; no puede ser idempotente porque, con cada llamada, cambia los resultados.

Por ejemplo, si cerramos un objeto una vez, ahora no tenemos suficiente información para saber si el objeto es idempotente después del cierre.

Para verificar eso, necesitamos cerrar el objeto por segunda vez, y si arroja una excepción, eso significa que el objeto no es idempotente, y si devuelve los mismos resultados al cerrar, eso significa que el objeto es idempotente.

Intentemos implementar un idempotente cerrable en Java.

package delftstack;

import java.io.Closeable;

public class Idempotent implements Closeable {
  private static boolean closed;

  public Idempotent() {
    closed = false;
  }
  public void close() {
    if (!Is_Closed()) {
      closed = true;
    }
  }

  public static boolean Is_Closed() {
    return closed;
  }
  public static void main(String args[]) {
    System.out.println(Is_Closed());
    System.out.println(Is_Closed());
  }
}

Closeable es una clase de java.io. Implementamos un closeable idempotente al inicializar un valor booleano y establecerlo en false en el método idempotente; siempre devolverá false.

Producción :

false
false

Métodos idempotentes en Java

El término de métodos idempotentes corresponde a los métodos HTTP. El método HTTP es idempotente cuando el resultado del método es siempre el mismo sin importar cuántas veces llamemos a la solicitud.

Tratemos de entender los métodos HTTP idempotentes con el ejemplo.

La solicitud GET: No importa cuántas veces hagamos una solicitud GET, siempre obtendremos la misma respuesta si la solicitud se implementa correctamente.

Por ejemplo, hacemos una solicitud GET para ver nuestros resultados en el sistema. Siempre será lo mismo por muchas veces que lo solicitemos.

Los métodos HTTP se dividen en dos tipos, uno es idempotente y el otro es no idempotente. La siguiente tabla muestra qué métodos HTTP son idempotentes y cuáles no.

Método ¿Idempotente?
GET
PUT
POST No
DELETE
HEAD
OPTIONS
PATCH No
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook