¿Son esos dos intercambiables en el contexto de la entidad de la base de datos Room o, si no, cuáles son las diferencias entre ellos?
@Ignore
es una anotación específica de Room, que dice que Room debe ignorar ese campo o método.
transient
es una construcción de Java, lo que indica que este campo no debe serializarse en la serialización de Java estándar. Habitación sucede para tratar esto de manera similar a @Ignore
por defecto. En su mayoría, eso está ahí para los casos en los que heredas de alguna clase que usa transient
y no controlas esa clase (por ejemplo, es de una biblioteca).
Para su propio código, si no está utilizando la serialización de Java, le recomiendo seguir con @Ignore
para los campos. transient
no es una palabra clave disponible para un método, por lo que para decirle a Room que ignore ciertos constructores, no tiene más remedio que usar @Ignore
.
Agregando a la respuesta de CommonsWare
transient
no es una buena opción para ignorar los campos de Room como respondió CommonsWare. Creará un bloqueador cuando se utilice el mismo modal para analizar datos del servidor y almacenarlos en la base de datos.
Supongamos que tienes una clase modal. MyModal.java
como a continuación
public static class MyModal {
@SerializedName(“intField”)
public int intField;
@SerializedName(“strField”)
public String strField;
@SerializedName(“booleanField”)
public boolean booleanField;
}
Si desea NO GUARDAR booleanField en la base de datos, y si modificó ese campo como
transient
: Ignorará este campo al guardar en la base de datos, PERO también ignorará este campo al analizar los datos que provienen del servidor.@Ignore
: solo ignorará este campo al insertar datos en la base de datos, pero este campo participará en el análisis json.
-
¿Y cómo hago para ignorar este campo mientras analizo json, pero lo incluyo en la base de datos?
-Ali Kazi
30 de noviembre de 2018 a las 4:48
-
Encontré la respuesta a mi propio comentario:
@ColumnInfo(name = "show_id")
public transient String showId;
-Ali Kazi
30 de noviembre de 2018 a las 5:08
-
La mayoría de las veces necesitamos lo contrario de esto.
– Brill Pappin
12 de febrero de 2021 a las 15:49
No puedo encontrar una referencia al transitorio en la habitación. desarrollador.android.com/entrenamiento/almacenamiento de datos/habitación/…
– joao86
8 dic 2017 a las 16:20
transitorio es la palabra clave integrada, mientras que Room agrega @ignore
– Zoe apoya a Ucrania
♦
8 de diciembre de 2017 a las 16:21
@joao86 docs.oracle.com/javase/specs/jls/se7/html/… kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-transient/…
– Pavlo
8 de diciembre de 2017 a las 16:27