Room. SQLite для Android. Часть 1. [Ru, Kotlin\Android]

Поділитися
Вставка
  • Опубліковано 15 жов 2024
  • Всем привет, меня зовут Алексей Гладков и я занимаюсь мобильной разработкой. Сегодня наконец-то мы добрались до баз данных. Начнем мы разумеется с Room как с самой популярной библиотеки для СУБД SQLIte. Room является наиболее популярной ORM для Android, поэтому приятного просмотра!
    Напоминаю, что видео вначале выходят для моих патронов и спонсоров. Стать им можно по ссылке ниже
    ===========================================
    Стать Патроном канала и получить доступ к уникальному материалу
    / mobiledeveloper
    Подписаться на boosty
    boosty.to/mobi...
    ===========================================
    Полезные статьи из мира мобильной разработки
    Яндекс.Дзен - zen.yandex.ru/...
    Teletype - teletype.in/@a...
    Мобильный разработчик в других соц. сетях
    =======================
    Вконтакте - mdeveloper
    Instagram - / nplau
    Телеграм - t.me/mobiledev...
    =======================
    Ставь лайк и расскажи друзьям, чтобы они тоже попробовали эту технологию

КОМЕНТАРІ • 75

  • @MobileDeveloper
    @MobileDeveloper  3 роки тому +10

    Немножко внутренностей
    02:48 - Виды баз данных
    06:02 - SqLite
    08:54 - Практическая часть
    10:32 - Подготовка проекта
    17:49 - Класс Room и модуль DataModule
    21:12 - Добавление Room
    24:08 - Создание таблицы
    27:31 - Запись и чтение данных (DAO)
    33:12 - Создание и подключение базы данных
    42:01 - Сохранение в базе данных

  • @oleg12395
    @oleg12395 2 роки тому +5

    Алексей все круто. Спасибо за крутейший материал. Единственное - сложновато когда не с начала начинаешь ... Это я так, как самый начинающий андройд разработчик )

  • @user-sankarsana
    @user-sankarsana 3 роки тому +12

    Круто!
    И да, нужно видео про транзакции.

  • @loragomel4706
    @loragomel4706 2 роки тому +2

    Спасибо автору за видео. Качественная подача материала и понятное объяснение. Я только начала работать программистом, пишу на языке Java и все равно уловила суть 🙂

  • @Mecenatt
    @Mecenatt 3 роки тому +9

    Если кто-то понял хоть одно слово , я думаю он знает как использовать ROOM.

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      Не очень понял, что вы имеете ввиду

    • @Mecenatt
      @Mecenatt 3 роки тому +1

      @@MobileDeveloper да имел ввиду что "жаргон" как минимум на Midl , а для нубасов непонятно .
      Ну а мидл и так знает рум

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Что конкретно не понятно?)

    • @михаилкоровин-е5м
      @михаилкоровин-е5м 3 роки тому +17

      @@MobileDeveloper Блин, может это у меня с головой проблемы, но все-таки, думаю, таких как я много. Описываю свои проблемы после 24-х минутного просмотра:
      1. Взят проект уже существующий. Мне, как человеку, который впервые на канале интересно узнать конкретно про room как его поставить и как начать пользоваться. Следовательно, не удобно изучать это смотря на большой проект, в котором минут 15 рассказывается как мы будем совмещать сервер и базу данных, что вообще не по теме. Если рассказывать про что-то, то лучше все-таки на очень простом примере.
      2. Было бы приятно видеть ссылки из которых берешь код для тех же зависимостей например. Я вот взял CompillerOptions от сюда developer.android.com/jetpack/androidx/releases/room и долго не мог понять почему gradle ругается на "to".
      3. Дошел я до 24 минуты, там ты открываешь папку room после работы с gradle. У меня папки room нет (может быть я не заметил конечно). Я не знаю, нужно ли ее создавать вручную, или она должна была появиться. Я не знаю толком как вообще в android с базами данных работать. Я просто зашел на страницу документашки по бд и там был совет использовать room) То есть, получается, я уже не могу ничего сделать, чтобы продолжить дальше следовать уроку и понять как работать с room на самом простом уровне, чтобы дальше уже учиться средствами чтения документашки.
      Но у тебя приятная подача материала. Узнал из урока хотя бы как обновлять приложения с бд, как раз задавался таким вопросом. Буду рад, если мои замечания помогут лучше понять типичного зрителя и улучшить контент)

    • @B0RSH777
      @B0RSH777 2 роки тому +1

      + Хотел просто добавить локальное хранение данных, но блин по создавал куча классов и интерфейсов, частично связал, начал ругатся на мои функции, не юзал до этого rxjava и drager, кароче нужно все переделывать. А я надеялся обойдусь пару файлами, думал будет просто записывать массив, и его вызывать при запуске ну и чекать удалленное хранение

  • @wasp5787
    @wasp5787 3 роки тому +3

    Недавно первый раз столкнулся с NoSql, в firebase firestore. первые пол часа просто тупил и не мог понять как в таком виде вообще работать с данными :) Потом придумал для себя такое представление, что если sql это можно представить как всем знакомый excel с табличками, то nosql это как физическая папка с мультифорами, в которых лежат документы. И как-то сразу стало понятно как с такой БД работать :) Но было бы полезно посмотреть видео и на тему nosql.
    p.s. мультифора - файл, пластиковый пакетик. недавно узнал, что вне сибири мало кто знает такое название ))

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +3

      Ой сразу вспомнил родной Томск ) да в Москве никто не знает, что такое мультифора. NoSql это целая группа разных реализаций, но в целом если взять firestore, то это выглядит просто как гигантский Dictionary ) чем он собственно и является )

    • @АнтонКулибякин
      @АнтонКулибякин 3 роки тому

      Для тех кто с Кубани - это вообще загадочное слово

    • @АнтонКулибякин
      @АнтонКулибякин 3 роки тому

      Ну попробуй посмотреть видео монги- mongo dB university, там на курсе m01 они рассказывают разницу

  • @damask_
    @damask_ Рік тому +2

    воу, а нельзя было запилить какое-нибудь новое приложение с использованием Room? мне как новичку не очень понятно, как и многим другим

    • @MobileDeveloper
      @MobileDeveloper  Рік тому +1

      Забавно, но под другими видео пишут воу, а нельзя было не hello world показать, а реальный проект?

  • @Juliet-z8z
    @Juliet-z8z Рік тому +1

    А вторая часть-то будет?)

  • @lui970
    @lui970 3 роки тому +1

    Про ошибку на (55:05)
    Проверьте на 44:57. Возможно проблема банально в Dao. В одном @Insert прописан OnConflictStrategy, а во втором нет. По умолчанию он падает на constraint при попытке добавить запись с таким же primary key.

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Хм, интересно ) я ещё не разбирал )

  • @mimictwt
    @mimictwt 2 роки тому

    Привет, может вопрос и тупой, но я не особо опытный программист и мне интересно, почему мы не можем просто кешировать данный с помощью SharedPreferences, а используем локальную бд ?

    • @EugeneVoronoy
      @EugeneVoronoy 2 роки тому

      БД работает вроде как быстрее, и более мощная в плане доступа к данным, когда нам нужно достать из БД данные по каким-то условиям, а не просто все подряд

  • @PandaTop.
    @PandaTop. 3 роки тому

    Про Dagger Hilt будет видео ?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Есть уже на канале, поищите

  • @АндрейТерегулов
    @АндрейТерегулов 3 роки тому +1

    32:16 Почему используется like, а ==? Ключ же интовый.

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Там нет a ==, что вы имеете ввиду?

    • @АндрейТерегулов
      @АндрейТерегулов 3 роки тому

      @@MobileDeveloper пропущено 'не', т.е. 'а не =='. Меня смутило сравнение целых чисел через like. В sql like применяется для поиска вхождения подстроки в строку.

  • @nikolozlatsabidze2196
    @nikolozlatsabidze2196 2 роки тому

    а там нелзя анотацию использывать (@Embedded)? когда у тебя лист в рум, а не создавать таипконвертеры

  • @MrPwnzrus
    @MrPwnzrus 3 роки тому +1

    Добрый день! Было бы интересно от вас получить видео (или даже цикл роликов) на тему нововведений в различных версиях андройд и какую они имеют прикладную роль непосредственно в разработке. Например, про сервисы в 8+ версиях и пр

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      Очень интересная идея, подумаю, спасибо )

  • @obozrevatel365
    @obozrevatel365 3 роки тому

    Друзья, пожалуйста подскажите как так научится писать приложения, какие ресурсы, книги, или т д.

  • @deadchannal
    @deadchannal 3 роки тому

    Полезно

  • @Trecoolerok
    @Trecoolerok 3 роки тому

    Какая версия rxjava?
    Я столкнулся с тем, что рум, хилт и 3 rx очень плохо дружат. Постоянно что-то отваливалось у kapt

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Версия вторая, на третью уже не хватило ибо ушёл на корутины

  • @sergeytretyakov3040
    @sergeytretyakov3040 3 роки тому

    Подскажите пожалуйста, на 16:57 что значит слово проксируете?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Имелось ввиду, что сам слой дата сорса не имеет никакой своей логики. То есть он тупо дёргает функцию у апи а эту функцию дёргает репозиторий. Получается, что смысла в таком дата сорсе нет, потому что он просто проксирует запрос и ничего с ним не делает. Поскольку не нужно делать разделение ради разделения, то в таком случае можно и без дата сорсов обойтись. Каждый новый слой абстракции должен быть создан с какой-то понятной целью. Например, очищать выдачу от сервера от не валидных данных, чтобы репозитории данные уже были валидные.
      Надеюсь понятно объяснил

  • @SergKoshelev
    @SergKoshelev 3 роки тому

    было бы здорово понять как рум поставить на gradle.kts, пробовал сам, но возникла проблема с каптом( без него приложение крашится без ошибки при старте)

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Я так понял я вам скинул уже свой ктс файлик )

    • @SergKoshelev
      @SergKoshelev 3 роки тому

      @@MobileDeveloper да)

  • @PandaTop.
    @PandaTop. 3 роки тому +1

    Когда вторая часть?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Возможно ее вообще не будет, ибо вторые части не очень интересны как я вижу)

    • @PandaTop.
      @PandaTop. 3 роки тому

      @@MobileDeveloper лично мне интересно )

  • @dmitrymukhin9050
    @dmitrymukhin9050 3 роки тому

    Каким эмулятором пользуетесь?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Да обычным, встроенным в студию

  • @TheDicobraz063
    @TheDicobraz063 3 роки тому

    Думаю проблема в следующем
    Цепочка вызовов примерно такая. Подписка на результаты запроса в локальный дс + выполнение запроса, далее дёргается удаленный дс, который сразу пишет в локальный дс, локальный эмитит всем новые данные и данные улетают в подписку (мы ведь в конкате подписались на изменения в бд) на локальный дс, далее конкат опять дергаеет удаленный дс, тот пишет в локабьный дс и так по кругу

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Возможно, перед второй частью решу эту проблему )

  • @olegleonov1310
    @olegleonov1310 3 роки тому +1

    А почемму rx+Single, а не coroutine+flow?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      В проекте Rx использовался

  • @Qwazar3559
    @Qwazar3559 3 роки тому +1

    хотелось бы уже часть два. Про миграции..

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Может сделаю, сейчас не в приоритете )

    • @inquisitor4894
      @inquisitor4894 9 місяців тому

      увы, не дождались)

  • @АнтонКулибякин
    @АнтонКулибякин 3 роки тому

    Слышал , что Бобок стал использовать SQLite

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      Кто? Бобок?

    • @АнтонКулибякин
      @АнтонКулибякин 3 роки тому

      @@MobileDeveloper ну да БоБок из Яндекса )))

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      Это кто?)))

    • @АнтонКулибякин
      @АнтонКулибякин 3 роки тому

      @@MobileDeveloper ua-cam.com/video/8uiikWcsf3A/v-deo.html . Это всем известный чувак , разработчик 👨‍💻, в Яндекс у него высокая должность - я точно не помню он толи вроде как топ менеджер 👨‍💼, толи около того 😜. А то что касается ситуации с SQLite- то они обсуждали в подкасте радио 📻 т , где бобок сказал, что он посмотрел в сторону SQLite и ее для его целей вполне хватило . По моему речь 🗣 была про то, что postgres для этих целей была сильно большой , а MongoDB он не знает и он посмотрел в сторону SQLite, но точно о чем была речь не помню - по моему суть была вот такая

  • @madmax_2994
    @madmax_2994 3 роки тому

    Извините за вопрос не в тему, но как в Андроиде реализовать навигацию по фрагментам с сохранением состояния как в iOS? В интернете одни костыли. Может кто направит?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      Приходите сегодня в 19 вечера на канал мы это прям показывать будем

  • @XmanX777
    @XmanX777 3 роки тому

    Автор приветствую,
    можно размер текста увеличить в видео на 20 pt

  • @olegleonov1310
    @olegleonov1310 3 роки тому

    Возможно ошибка в том, что когда ты кладёшь в БД, то дёргается observable от loadAllQuests() и у тебя на экране показются данные только из БД, из сети никогда не показываются.

    • @KriopeG
      @KriopeG 3 роки тому

      Тоже об этом подумал, подозреваю, что так и есть.

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Нет, там в логах четко видно что именно с сервака перезапрашивается каждый раз

  • @Youngheart-u4w
    @Youngheart-u4w 9 місяців тому +2

    Видео не для новичков

  • @sergsangels
    @sergsangels 2 роки тому

    НЕ ху...я не понятно но очень интересно 😃

  • @матжонфаттоев-щ5ш
    @матжонфаттоев-щ5ш 3 роки тому

    Когда будет видео про repository

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      А надо?) вроде я тут примерно показал как это работает

  • @luide2167
    @luide2167 6 місяців тому

    Ничё не понял. Зашёл поучит базу данных, а тут на первом уроке уже миллион строк кода написано. Мда