sql >> Base de Datos >  >> NoSQL >> MongoDB

Comportamiento de proyección de Morphia para variable de instancia con valor predeterminado

Cuando Morphia lee sus documentos a partir de los resultados de la consulta, lo primero que hace es crear una nueva instancia de su entidad, Student . Simplemente invoca el constructor sin argumentos. No hay magia involucrada. El campo de la ciudad se inicializa con un valor. Una vez hecho esto, Morphia tomará cada clave en el documento devuelto de la base de datos, encontrará ese campo asignado y lo configurará. En su caso, no hay clave de ciudad en el documento, por lo que Morphia nunca establece ese campo dejando el valor inicializado en su lugar.

En general, inicializar campos en entidades como esta es una mala práctica. Para cada entidad cargada desde la base de datos, la JVM tiene que inicializar esos campos con algún valor solo para sobrescribirlos más tarde. En casos como el suyo, donde ciertos campos no aparecen en el resultado de una consulta, esos valores permanecen después de que Morphia devuelve las nuevas instancias a su aplicación.