Cache de crianças grandes no modelo de dados com DB4O
-
19-09-2019 - |
Pergunta
Eu tenho um modelo de dados com um esqueleto (metadados) e grandes objetos de dados. Eu gostaria de manter o esqueleto na memória e manter referências fracas aos objetos de dados. Entendo como implementaria isso com Java Plain, como eu criaria um mapa de fracos e limparia etc. Mas estou me perguntando qual seria a melhor maneira de ressuscitar os objetos de dados depois que eles tenham sido GC?
Devo adicionar uma chave técnica ao meu mapa que eu atribuo a um campo no objeto de dados, para que eu possa encontrá -lo novamente? Ou devo ligar para o db.ext (). GetId () e usar esse ID como chave técnica? Nesse caso, como eu receberia essas chaves ao carregar o pai? O que você sugere?
Solução
Eu adicionaria uma chave técnica ao seu grande objeto de dados. Em seguida, você armazena essa chave técnica em sua classe metadada. Agora, quando você obtém o grande objeto de dados, você o obtém por sua chave técnica. Essa solução bastante simples.
O DB4O realmente usa referências fracas para devolver o mesmo objeto e evitar a desestimação desnecessária. Portanto, quando você pede um objeto e não foi coletado pelo GC, o DB4O retornará o mesmo objeto.