Täydellinen opas Room for Local Databases -sovellukseen Androidilla

Viimeisin päivitys: noviembre 3, 2026
Kirjoittaja: Pikseloitu
  • Se korvaa manuaalisen SQLite-käsittelyn abstraktiokerroksella, joka validoi kyselyt käännösaikana.
  • Se on jäsennelty käyttämällä kolmea olennaista komponenttia: taulukoiden entiteettejä, toimintojen DAO-objekteja ja yhteyden tietokantaluokkaa.
  • Se mahdollistaa monimutkaisten suhteiden ja skeemasiirtojen hallinnan tietojen menetyksen estämiseksi sovellusta päivitettäessä.
  • Se integroituu saumattomasti MVVM-arkkitehtuuriin käyttämällä repositorioita, ViewModel-malleja ja asynkronisia työnkulkuja, kuten Flow'ta.

Paikallisen huonetietokannan käsitteellinen esitys Android-älypuhelimessa, korostaen sisäistä tallennustilaa.

Kun suunnittelet sovellusta, joka käsittelee huomattavan määrän järjestettyä dataa, ymmärrät, että jatkuva internetyhteydestä riippuvaisuus on riski. Paras tapa estää sovelluksesi reagoimattomuus, kun käyttäjä ajaa tunneliin tai data loppuu, on ottaa käyttöön paikallinen tallennusjärjestelmä . Tässä kohtaa Room tulee mukaan kuvaan, työkalu, jonka avulla voimme tallentaa tietoja laitteelle, jotta käyttökokemus on saumaton ja käytettävissä milloin tahansa.

Room toimii pohjimmiltaan älykkäänä siltana SQLiten yli. Vaikka SQLite on erittäin tehokas, sen suora käyttö voi olla hankalaa, koska SQL on kirjoitettava käsin, etkä tiedä, oletko tehnyt virheen, ennen kuin sovellus kaatuu suorituksen aikana. Room ratkaisee tämän tarjoamalla meille abstraktiokerroksen, joka tarkistaa kyselyt koodin kääntämisen aikana, mikä säästää paljon virheenkorjausaikaa ja poistaa toistuvan koodin, joka yleensä tylsistyttää ohjelmoijan.

Henkilö käyttää Android-älypuhelinta metrotunnelissa havainnollistamassa paikallisen datan säilyvyyden tarvetta offline-käyttöä varten.

Huoneen peruspilarit

Holografinen visualisointi datataulukosta riveineen ja sarakkeineen mobiilinäytöllä, joka edustaa huoneen entiteettejä ja ensisijaisia ​​avaimia.

Jotta voit määrittää tietokannan tämän kirjaston avulla, sinun on ymmärrettävä kolme keskeistä yhdessä toimivaa osaa. Ensinnäkin meillä on dataentiteetit , jotka ovat yksinkertaisesti luokkia, jotka määrittelevät, miltä taulukko näyttää tietokannassa; jokainen tämän luokan esiintymä edustaa yhtä riviä taulukossa.

  Täydellinen ja ajantasainen opas parhaisiin Nintendo Switch -emulaattoreihin PC:lle ja Androidille

Sitten on olemassa datan käyttöoikeusobjekteja (DAO) . Nämä rajapinnat ovat vuorovaikutuksen ydin, koska niissä määritellään metodit datan lisäämiseen, poistamiseen tai hakemiseen. Sen sijaan, että kirjoittaisit monimutkaisia ​​kyselyitä liiketoimintalogiikan keskelle, voit yksinkertaisesti kutsua metodia DAO:ssa, ja olet valmis. Lopuksi on tietokantaluokka , joka on pääasiallinen käyttöpiste ja vastaa alla olevan yhteyden hallinnasta.

Konfigurointi ja käyttöönotto

Ohjelmistokehittäjä, joka työskentelee ammattimaisessa ympäristössä kahden näytön asetuksilla, jotka sopivat erinomaisesti Android-ohjelmointiympäristöön.

Aloittaaksesi sinun on lisättävä oikeat riippuvuudet build.gradle-tiedostoosi. Versiostasi riippuen Room saattaa vaatia KSP:n (Kotlin Symbol Processing) tai kaptin merkintöjen käsittelyyn. On tärkeää sisällyttää ajonaikainen kirjasto, kääntäjä ja, jos käytät Kotlinia, korutiinilaajennus (room-ktx), jotta toiminnot eivät estä käyttöliittymää.

Entiteettien ja taulukoiden suunnittelu

Luokan muuntamiseksi taulukoksi käytämme @Entity-annotaatiota. Voit antaa Roomin päättää nimen tai määrittää sen itse tableName-ominaisuuden avulla. Ensisijaisen avaimen määrittäminen @PrimaryKey-ominaisuuden avulla on pakollista ; se voidaan luoda automaattisesti, jos et halua hallita tunnisteita manuaalisesti. Jos sinulla on kenttiä, joita et halua tallentaa tietokantaan, kuten muistia paljon käyttävä kuva, voit ohittaa ne @ Ignore-annotuksella.

Tapauksissa, joissa sinun on tallennettava monimutkaisia ​​tietotyyppejä, joita SQLite ei oletusarvoisesti ymmärrä (kuten päivämäärä), sinun on luotava tyyppimuuntimia . Käyttämällä `@TypeConverter`-funktiota opetat Roomille, kuinka muuntaa kyseinen monimutkainen objekti alkeelliseksi tyypiksi, kuten `Long`-tyypiksi, ja päinvastoin, ja rekisteröit sitten nämä muuntimet päätietokannan luokkaan.

  Kuinka kääntää pelejä Androidilla reaaliajassa

DAOjen ja kyselyiden hallinta

Taika tapahtuu DAO:ssa. Käytössäsi on käteviä metodeja, kuten @Insert, @Update ja @Delete . Lisäyksille voit määrittää konfliktistrategioita, kuten REPLACE, jolloin jos dataa on jo olemassa, se korvataan automaattisesti. Tarkempiin kyselyihin käytämme @Query-metodia , johon kirjoitamme SQL-kyselyn. Tilaa on paljon, koska jos teet virheen SQL-sarakkeen nimessä, se varoittaa sinua ennen sovelluksen asentamista.

Koska tietokantaoperaatiot ovat hitaita, niitä ei tulisi koskaan suorittaa pääsäikeessä . Siksi on parasta merkitä funktiot `suspend`-tyypeiksi Kotlin-korutiinien kanssa käytettäväksi tai antaa niiden palauttaa havaittavia tyyppejä, kuten `Flow` tai `LiveData` , jolloin rajapinta päivittyy automaattisesti heti, kun taulukon tiedot muuttuvat.

Tietosuhteiden hallinta

Todellisessa maailmassa data on yhteydessä toisiinsa. Room välttää laiskaa latausta estääkseen käyttöliittymän jumiutumisen, joten käytämme väliluokkia `@Relation`- metodilla . Yksi-yhteen- tai yksi-moneen-suhteen luomiseksi määrittele luokka, joka sisältää ensisijaisen entiteetin ja luettelon siihen liittyvistä entiteeteistä. Monta -moneen- suhteen luomiseksi sinun on luotava ristiviittaustaulukko, joka linkittää molempien entiteettien tunnukset.

Edistynyt hallinta ja migraatiot

Kun sovelluksesi kasvaa ja sinun on lisättävä sarake taulukkoon, et voi noin vain muuttaa luokkaa. Sinun on kasvatettava tietokannan versiota ja määriteltävä Migration-objekti. Jos et halua kirjoittaa migraatio-SQL:ää, Roomin nykyaikaiset versiot tarjoavat @AutoMigration , joka tekee raskaan työn puolestasi, kun viet skeeman.

  Signal, turvallinen viestisovellus, joka suojaa keskustelujasi

Jos olet siirtämässä vanhempaa sovellusta, joka jo käyttää puhdasta SQLitea, prosessiin kuuluu mallien annotointi, DAO:iden luominen ja tyhjän siirtopolun määrittäminen, koska tietorakenne ei muutu, vain tapa, jolla käytät sitä. Edistyneemmille käyttäjille on myös mahdollista levittää tietokanta olemassa olevasta tiedostosta käyttämällä `createFromAsset`-metodia.

Suositeltu arkkitehtuuri: Repository ja ViewModel

MVVM-arkkitehtuurin 3D-kaavio, joka näyttää tiedonkulun käyttöliittymän, ViewModelin, tietovaraston ja huonetietokannan välillä.

Koodikaaoksen välttämiseksi on parasta noudattaa MVVM-arkkitehtuuria. Repository toimii välittäjänä; se päättää, haetaanko tiedot verkosta vai luetaanko ne huoneen paikallisesta välimuistista. ViewModel puolestaan ​​vastaa tietojen näyttämisestä näkymässä. Toteuttamalla tietokannan Singleton-mallina varmistamme , että useita instansseja ei ole auki samanaikaisesti, mikä kuluttaisi liikaa laiteresursseja.

Roomin käyttöönotto mullistaa Android-sovelluksen vankan toiminnan mahdollistaen turvallisen, tehokkaan ja helposti ylläpidettävän datan säilyvyyden. Yhdistämällä hyvin määritellyt entiteetit, optimoidut DAO:t ja repositoriopohjaisen arkkitehtuurin saavutat sovelluksen, joka pystyy toimimaan offline-tilassa ja jolla on erinomainen vasteaika, poistaen SQLiten manuaaliset riskit ja hyödyntäen käännösaikaista varmennusta.