Да, если вы хотите написать для него код моста.
Один из методов, который вы можете вызвать на RoomDatabase.Builder
, это openHelperFactory()
. Это берет экземпляр SupportSQLiteOpenHelper.Factory
, и это то, что Room использует для взаимодействия с базовой реализацией базы данных. По умолчанию Room использует FrameworkSQLiteOpenHelper.Factory
, но через openHelperFactory()
вы можете указать свой собственный.
Это, в свою очередь, потребует от вас реализации других интерфейсов для других классов, таких как SupportSQLiteDatabase
. По сути, это оболочка с API, который чем-то напоминает API фреймворка. Вы переводите эти вызовы в реализацию SQLite, которую хотите использовать.
Я сделал это для SQLCipher для Android в виде библиотеки SafeRoom . Прямо сейчас моя реализация немного неуклюжа, из-за некоторых ограничений в SQLCipher для Android, которые, надеюсь, скоро будут сняты Вы бы создали такой же класс для вашей конкретной реализации SQLite. Затем подключите SupportSQLiteHelper.Factory
к RoomDatabase.Builder
, и теперь Room поговорит с вашей базой данных.
Обратите внимание, что вы не можете расширить саму комнату. Например, вы не можете изобретать новые аннотации Room, которые знают о геопространственных вещах. И у компилятора Room могут возникнуть проблемы с вашим геопространственным SQL, если этот SQL нарушает то, что ожидает Room (например, новые ключевые слова). Кажется, что они добавили «просто» много функций, так что надеюсь, что Room будет вести себя хорошо.