Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/ / /

CRUD - Create - SDK do Flutter

Nesta página

  • Transações de gravação
  • Operações de Escrita
  • Gravações em segundo plano
  • Criar objetos
  • Crie um objeto
  • Crie vários objetos

O Atlas Device SDK usa um mecanismo de armazenamento altamente eficiente para persistir objetos. Você pode criar objetos, atualizar objetos no banco de dados e, eventualmente, excluir objetos do banco de dados. Como essas operações modificam o estado do banco de dados, as chamamos de gravações.

O SDK lida com as operações de gravação como transações. Uma transação é um conjunto de operações de leitura e gravação que o SDK trata como uma única operação indivisível. Em outras palavras, uma transação é tudo ou nada: ou todas as suas operações na transação são bem-sucedidas ou nenhuma é efetivada.

Todas as operações de gravação devem ocorrer em uma transação.

O banco de dados permite apenas uma transação aberta por vez. O SDK bloqueia outras gravações em outros segmentos até que a transação aberta seja concluída. Consequentemente, não há condição de corrida ao ler valores do banco de dados em uma transação.

Quando você termina a transação, o SDK a confirma ou a cancela:

  • Quando o SDK confirma uma transação, ele grava todas as alterações no disco. Para bancos de dados sincronizados, o SDK classifica a alteração para sincronização com Atlas Device Sync.

  • Quando o SDK cancela uma transação de gravação ou uma operação na transação causa um erro, todas as alterações são descartadas (ou "revertidas").

Após abrir um banco de dados de dados, você pode criar objetos nele usando um Realm.write() bloqueio de transação.

realm.write((){
// ...write data to realm
});

Você também pode retornar valores da transação de gravação usando a função de chamada de resposta.

final yoda = realm.write<Person>(() {
return realm.add(Person(ObjectId(), 'Yoda'));
});

Aviso

Gravar RealmObjects em um arquivo de Realm

Você só pode gravar RealmObjects em um único arquivo de Realm. Se você tentar gravar um RealmObject já existente em um arquivo de Realm em outro banco de dados, o SDK gerará um RealmException.

Você pode adicionar, modificar ou excluir objetos de forma assíncrona usando a função Realm.writeAsync().

Quando você usa Realm.writeAsync() para executar operações de gravação, a espera para obter o bloqueio de gravação e a confirmação da transação ocorrem em segundo plano. Somente a gravação em si ocorre no processo principal.

Essa abordagem pode reduzir o tempo gasto bloqueando a execução do processo principal. Isso é particularmente útil ao usar o Device Sync nos casos em que você não sabe quando nem por quanto tempo acontecerá a gravação do cliente de sincronização.

// Add Leia to the realm using `writeAsync`
Person leia = Person(ObjectId(), "Leia");
realm.writeAsync(() {
realm.add<Person>(leia);
});

Os exemplos nesta página usam dois tipos de objeto, Person e Team.

@RealmModel()
class _Person {
@PrimaryKey()
late ObjectId id;
late String name;
late List<String> hobbies;
}
@RealmModel()
class _Team {
@PrimaryKey()
late ObjectId id;
late String name;
late List<_Person> crew;
late RealmValue eventLog;
}

Para adicionar um objeto ao banco de dados, passe uma instância de uma classe de objeto de realm para o banco de dados em um bloco de transação de gravação com o método Realm.add().

realm.write(() {
realm.add(Person(ObjectId(), 'Lando'));
});

Para adicionar vários objetos a um banco de dados, passe uma lista de vários objetos para Realm.addAll() dentro de um bloco de transação de gravação.

realm.write(() {
realm.addAll([
Person(ObjectId(), 'Figrin D\'an'),
Person(ObjectId(), 'Greedo'),
Person(ObjectId(), 'Toro')
]);
});

Voltar

CRUD