Dados do modelo - React Native SDK
Nesta página
Cada objeto de Realm está em conformidade com um tipo de objeto específico . Tipos de objetos são classes que você define e que contêm as propriedades e relacionamentos para objetos desse tipo usando um esquema predefinido.
O domínio garante que todos os objetos em um domínio estejam em conformidade com o esquema do seu tipo de objeto e valida os objetos sempre que eles são criados, modificados ou excluídos.
Os objetos de Realm são fundamentalmente semelhantes a um objeto JavaScript comum, mas também trazem alguns recursos adicionais, como validação de esquema e queries em tempo real.
A memória do React Native SDK mapeia os objetos de Realm diretamente para objetos JavaScript nativos, o que significa que não há necessidade de usar uma biblioteca especial de acesso a dados, como um ORM. Em vez disso, você pode trabalhar com objetos de Realm como faria com qualquer outro objeto.
Esquema de Realm
Um esquema de domínio é uma lista de esquemas de objeto válidos que um domínio pode conter. Cada Objeto de domínio deve estar em conformidade com um Tipo de objeto de domínio incluído no esquema de seu Realm.
Se um domínio já contiver dados quando você abri-lo, o Realm validará cada objeto para garantir que um esquema de objeto tenha sido fornecido para seu tipo e que atenda a todas as restrições especificadas no esquema.
Utilizando @realm/react
, você define um esquema de Realm passando esquema de objetos individuais para RealmProvider
ou createRealmContext()
.
import Profile from './Models/Profile'; import {createRealmContext} from '@realm/react'; export const SyncedRealmContext = createRealmContext({ // Pass all of your models into the schema value. schema: [Profile], });
Relacionamentos
Você pode definir relacionamentos entre objetos em um realm. O Realm modela relacionamentos como propriedades de objeto que apontam para outros objetos de um determinado tipo no Realm. Você define um relacionamento no nível do tipo declarando uma propriedade no esquema do tipo onde o valor é outro tipo de objeto.
A consulta de um relacionamento é tão eficiente quanto uma propriedade regular. Relacionamentos são referências diretas a outros objetos, portanto, você não precisa usar junções e modelos complexos para defini-los e usá-los como faria em um banco de dados relacional. Em vez disso, você pode acessar objetos relacionados lendo e escrevendo diretamente na propriedade de relacionamento.
Existem três tipos principais de relacionamentos entre objetos:
Observação
Realm versus outros bancos de dados
Os objetos geralmente contêm referências diretas a outros objetos. Ao trabalhar com objetos e referências, você normalmente copia dados do armazenamento do banco de dados para a memória do aplicativo. Essa situação deixa o desenvolvedor com uma escolha do que copiar para memória:
Você pode copiar todos os objetos referenciados para a memória com antecedência. Isso significa que todos os dados referenciados estão sempre disponíveis rapidamente, mas podem usar muitos recursos. Se um sistema tiver memória limitada, isso pode não ser viavel.
Você pode copiar apenas um valor de chave estrangeira para cada objeto. Mais tarde, você pode usar a chave para procurar o objeto completo quando precisar dele. Essas pesquisas "preguiçosas" são mais eficientes em termos de memória do que copiar todos os objetos referenciados antecipadamente. No entanto, eles exigem que você mantenha mais código de query e use pesquisas de tempo de execução que podem desacelerar seu aplicativo.
A arquitetura de query do Realm evita a compensação entre uso de memória e sobrecarga computacional. Em vez disso, as queries do Realm podem fazer referência direta a objetos relacionados e suas propriedades no disco.