WEBVTT

1
00:01.160 --> 00:07.490
Dopo aver creato la classe entità,
dobbiamo implementare la

2
00:07.490 --> 00:08.600
seconda parte del database delle stanze,
ovvero la Dow.

3
00:08.630 --> 00:15.950
Dow è l'acronimo di Data Access Object, un
modello che si

4
00:15.950 --> 00:18.020
può usare per separare il livello di
persistenza dal resto dell'applicazione.

5
00:18.020 --> 00:20.630
Fornendo un'interfaccia astratta.

6
00:20.630 --> 00:29.090
La funzionalità di Dow consiste nel
nascondere tutte le complessità legate
all'esecuzione di

7
00:29.090 --> 00:34.400
operazioni sui database nel livello di
persistenza sottostante, separato dal
resto dell'applicazione.

8
00:34.400 --> 00:41.000
Ciò consente di modificare il livello dei
dati indipendentemente dal codice che li
utilizza.

9
00:41.030 --> 00:41.870
Il Dow.

10
00:41.900 --> 00:46.670
È possibile inserire, cancellare,
aggiornare e interrogare i dati del
database.

11
00:46.970 --> 00:55.160
In sintesi, l'oggetto Dow Data Access è
un'interfaccia o una

12
00:55.160 --> 00:56.810
classe astratta che definisce i metodi di
accesso al database.

13
00:56.810 --> 01:04.640
Utilizza le annotazioni per mappare le
query SQL alle funzioni, consentendo agli
sviluppatori di interagire

14
01:04.640 --> 01:09.660
con il database senza scrivere SQL
direttamente all'interno del pacchetto di
database della stanza.

15
01:09.660 --> 01:12.870
Creeremo una nuova classe Kotlin.

16
01:12.870 --> 01:16.020
Lo chiamerò nota Dao.

17
01:16.050 --> 01:18.060
In realtà si tratta di un'interfaccia.

18
01:18.060 --> 01:21.330
Selezionate quindi l'interfaccia ed ecco
che si parte.

19
01:21.360 --> 01:26.820
Indicare ad Android Studio che questa
interfaccia agirà come un Dao nel nostro
database di stanze.

20
01:26.820 --> 01:30.000
Dobbiamo annotarlo con add Dao.

21
01:30.030 --> 01:33.960
Si può notare che lo stiamo importando da
android.ru.

22
01:33.990 --> 01:37.980
Ok, questa è l'importazione del pacchetto
Dao.

23
01:37.980 --> 01:46.170
Il Dao è tipicamente un'interfaccia o una
classe astratta in

24
01:46.200 --> 01:47.250
cui si definiscono i metodi per varie
operazioni sul database.

25
01:47.250 --> 01:51.540
Per semplicità, creeremo due funzioni.

26
01:51.540 --> 01:59.220
Per prima cosa dobbiamo annotare il primo
metodo con insert

27
01:59.220 --> 02:01.680
e lo trasformeremo in una funzione di
sospensione denominata insert.

28
02:01.680 --> 02:10.920
E stiamo inserendo nel database un record
di tipo nodo, che viene creato prima
dell'annotazione insert.

29
02:10.950 --> 02:15.870
Una sala fornisce annotazioni per eseguire
operazioni sul database.

30
02:15.870 --> 02:17.850
Le annotazioni più comuni includono.

31
02:17.860 --> 02:23.920
aggiungere, inserire, aggiornare,
cancellare e interrogare inserire dati nel
database.

32
02:23.950 --> 02:24.550
Aggiornamento.

33
02:24.580 --> 02:26.650
Aggiornare i dati esistenti.

34
02:26.680 --> 02:27.190
Cancellare.

35
02:27.190 --> 02:30.040
Elimina l'annotazione dei dati e della
query.

36
02:30.070 --> 02:30.760
Interrogazione.

37
02:30.760 --> 02:31.660
Lasciate che vi mostri.

38
02:31.690 --> 02:36.670
Qui la query esegue una query SQL
personalizzata.

39
02:36.670 --> 02:41.590
È l'annotazione più versatile, che
consente di effettuare interrogazioni
complesse.

40
02:41.590 --> 02:43.840
Ad esempio, selezionare.

41
02:43.870 --> 02:45.760
Dobbiamo creare una stringa.

42
02:45.760 --> 02:49.750
Selezionare tutti dalla tabella dei nodi.

43
02:49.750 --> 02:51.490
La parola chiave "sospendere".

44
02:51.520 --> 03:00.460
Le funzioni di sospensione in Kotlin sono
utilizzate nelle

45
03:00.460 --> 03:01.240
coroutine per eseguire operazioni
asincrone senza bloccare il thread.

46
03:01.270 --> 03:10.120
La parola chiave Suspend contrassegna una
funzione come sospendibile, il che
significa che può sospendere

47
03:10.120 --> 03:13.210
la sua esecuzione e riprenderla in
seguito, consentendo un codice non
bloccante e non bloccante.

48
03:13.240 --> 03:21.940
Permette di eseguire attività di lunga
durata, come richieste di

49
03:21.940 --> 03:24.070
rete o operazioni di database, senza
bloccare il thread principale.

50
03:24.100 --> 03:25.390
Pausa e ripresa.

51
03:25.390 --> 03:32.150
È possibile utilizzare la funzione di
sospensione per mettere in pausa e
riprendere un'attività che può

52
03:32.150 --> 03:40.790
essere messa in pausa e ripresa in un
secondo momento, consentendo un
multitasking efficiente, e

53
03:40.790 --> 03:41.480
la coroutine deve essere chiamata
dall'interno di una coroutine o di
un'altra funzione di sospensione.

54
03:41.480 --> 03:47.240
Si rimanda alla sezione sulle coroutines
all'inizio del corso.

55
03:47.240 --> 03:53.720
In sintesi, la funzione suspend consente
di scrivere codice asincrono in

56
03:53.720 --> 03:57.290
modo sequenziale, migliorando la
leggibilità e l'efficienza delle
applicazioni Kotlin.

57
03:57.290 --> 04:02.390
Quindi introduciamo l'annotazione insert e
l'annotazione query.

58
04:02.390 --> 04:04.940
Inoltre, abbiamo introdotto la funzione di
sospensione.

59
04:04.940 --> 04:12.110
Inseriamo la nota nel thread in background

60
04:12.140 --> 04:13.130
nella seconda funzione all'interno del
nodo Dao.

61
04:13.160 --> 04:15.530
Non useremo la funzione di sospensione.

62
04:15.530 --> 04:20.030
Utilizzeremo direttamente una funzione
chiamata get all nodes.

63
04:20.030 --> 04:22.130
Perché è una domanda molto semplice.

64
04:22.160 --> 04:25.970
Non abbiamo bisogno di un thread in
background per eseguire questa azione.

65
04:26.000 --> 04:29.570
Andate a prendere tutti i record
all'interno della tabella.

66
04:29.600 --> 04:30.920
Ottenere tutti i nodi.

67
04:30.920 --> 04:35.760
Li restituisce come dati vivi di tipo
elenco.

68
04:35.790 --> 04:36.990
Da notare.

69
04:37.020 --> 04:40.080
Importare la classe LiveData e questo va
bene.

70
04:40.110 --> 04:48.390
LiveData è una classe di dati osservabili
progettata per contenere dati che possono
essere

71
04:48.390 --> 04:51.540
osservati all'interno di un determinato
ciclo di vita, come un'attività o un
frammento.

72
04:51.570 --> 04:59.970
LiveData è consapevole del ciclo di vita,
cioè rispetta il ciclo

73
04:59.970 --> 05:01.590
di vita di altri componenti
dell'applicazione, come attività,
frammenti o servizi.

74
05:01.620 --> 05:10.680
Questa consapevolezza garantisce che
LiveData aggiorni solo gli osservatori che
si trovano in uno stato di ciclo di vita
attivo.

75
05:10.710 --> 05:20.100
In sintesi, LiveData of list of Node
rappresenta un elenco osservabile di
oggetti

76
05:20.100 --> 05:27.780
nodo che possono essere osservati
all'interno di un componente consapevole
del ciclo di

77
05:27.780 --> 05:28.740
vita, fornendo un approccio reattivo alla
gestione dei dati nelle applicazioni
Android.

78
05:28.740 --> 05:36.720
In questo video abbiamo introdotto il Dao
e abbiamo creato le due funzioni insert

79
05:36.720 --> 05:40.020
e get all nodes, una di tipo insert e una
di tipo query.


