Pregunta

Funcionamiento Kodo 4,2 y teniendo una edición consultas ineficientes siendo generado por Kodo. Esto sucede cuando ir a buscar un objeto que contiene una colección donde esa colección tiene una relación de Bidrectional volver al primer objeto.

Class Classroom
{
     List<Student> _students; 
}

Class Student
{
     Classroom _classroom;
}

Si creamos un plan de ir a buscar para obtener una lista de salones de clase y sus estudiantes correspondientes al establecer lo siguiente plan de ir a buscar:

fetchPlan.addField (Classroom.class,”_ estudiantes”);

Esto dará lugar a dos consultas (obtener las aulas y luego llegar a todos los estudiantes que se encuentran en esas aulas), que es lo que cabría esperar.

Sin embargo, si incluimos la parte posterior referencia a la clase en nuestro plan de ir a buscar para que el campo _classroom para ser poblada por hacer fetchPlan.addField (Student.class, “_classroom”), esto dará lugar a X número de adicionales consultas, donde X es el número de alumnos en cada aula.

Puede alguien explicar cómo solucionar este problema? Kodo ya cuenta con objetos del aula original al punto de que es la ejecución de las consultas para recuperar objetos del aula y los puso en el campo _classroom de cada objeto Student. Por lo que se puede esperar Kodo simplemente establecer esos objetos en el campo _classroom en cada objeto Estudiante en consecuencia y no volver a la base de datos.

Una vez más, la documentación brilla por su ausencia, pero por lo que he leído que debería ser capaz de hacer esto de manera más eficiente.

Note-- EAGER_FETCH.PARALLEL está encendido y he intentado esto con el almacenamiento en caché (consulta de datos y cachés) enciende y se apaga y no hay diferencia en las consultas resultantes.

¿Fue útil?

Solución

Se trabajó con Oracle Support en esto- se trata de un defecto en Kodo 4.2 (la última versión). Fix es sacar atributo-fetch-grupo predeterminado por completo (apenas no lo puso a verdadero o falso) del archivo de JDO metadatos para los campos que se encuentran en el lado de uno-a-uno de la relación bidireccional. Así, en el ejemplo anterior, debería sacar el atributo-fetch-grupo por defecto para el campo Student._classroom.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top