# RoomDatabase.Builder

added in[version 1.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  
belongs to Maven artifact android.arch.persistence.room:runtime:1.1.0-beta2  
Summary:[Methods](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder#inhmethods)  

# RoomDatabase.Builder

| The`android.arch`Architecture Components packages are no longer maintained. They have been superseded by the corresponding[androidx.\*](https://developer.android.com/jetpack/androidx/migrate)packages. See[androidx.room.RoomDatabase.Builder](https://developer.android.com/reference/androidx/room/RoomDatabase.Builder)instead.

`
public
static


class
RoomDatabase.Builder
`  
`

extends Object


``


`

|---|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| java.lang.Object                                                                                                                                                                                   ||
| ↳ | android.arch.persistence.room.RoomDatabase.Builder\<T extends[android.arch.persistence.room.RoomDatabase](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase)\> |

<br />

*** ** * ** ***

Builder for RoomDatabase.

## Summary

|                                                                                                                                                                                                                                                                              ### Public methods                                                                                                                                                                                                                                                                              ||
|---------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` `[Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)`<T>` | ` `[addCallback](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder#addCallback(android.arch.persistence.room.RoomDatabase.Callback))`(`[RoomDatabase.Callback](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Callback)` callback) ` Adds a[RoomDatabase.Callback](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Callback)to this database. |
| ` `[Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)`<T>` | ` `[addMigrations](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder#addMigrations(android.arch.persistence.room.migration.Migration...))`(`[Migration...](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration)` migrations) ` Adds a migration to the builder.                                                                                                                |
| ` `[Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)`<T>` | ` `[allowMainThreadQueries](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder#allowMainThreadQueries())`() ` Disables the main thread query check for Room.                                                                                                                                                                                                                                                          |
| ` T`                                                                                                          | ` `[build](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder#build())`() ` Creates the databases and initializes it.                                                                                                                                                                                                                                                                                                 |
| ` `[Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)`<T>` | ` `[fallbackToDestructiveMigration](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder#fallbackToDestructiveMigration())`() ` Allows Room to destructively recreate database tables if[Migration](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration)s that would migrate old database schemas to the latest schema version are not found.                                     |
| ` `[Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)`<T>` | ` `[fallbackToDestructiveMigrationFrom](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder#fallbackToDestructiveMigrationFrom(int...))`(int... startVersions) ` Informs Room that it is allowed to destructively recreate database tables from specific starting schema versions.                                                                                                                                     |
| ` `[Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)`<T>` | ` `[openHelperFactory](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder#openHelperFactory(android.arch.persistence.db.SupportSQLiteOpenHelper.Factory))`(`[SupportSQLiteOpenHelper.Factory](https://developer.android.com/reference/android/arch/persistence/db/SupportSQLiteOpenHelper.Factory)` factory) ` Sets the database factory.                                                                             |
| ` `[Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)`<T>` | ` `[setJournalMode](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder#setJournalMode(android.arch.persistence.room.RoomDatabase.JournalMode))`(`[RoomDatabase.JournalMode](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.JournalMode)` journalMode) ` Sets the journal mode for this database.                                                                                  |

| ### Inherited methods |
|-----------------------|---|
| From class` java.lang.Object ` |-------------------|-------------------------------| | ` Object`         | ` clone() `                   | | ` boolean`        | ` equals(Object arg0) `       | | ` void`           | ` finalize() `                | | ` final Class<?>` | ` getClass() `                | | ` int`            | ` hashCode() `                | | ` final void`     | ` notify() `                  | | ` final void`     | ` notifyAll() `               | | ` String`         | ` toString() `                | | ` final void`     | ` wait(long arg0, int arg1) ` | | ` final void`     | ` wait(long arg0) `           | | ` final void`     | ` wait() `                    | ||

## Public methods

### addCallback

added in[version 1.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
Builder<T> addCallback (RoomDatabase.Callback callback)
```

Adds a[RoomDatabase.Callback](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Callback)to this database.

<br />

|                        Parameters                         ||
|------------|-----------------------------------------------|
| `callback` | `RoomDatabase.Callback`: The callback. <br /> |

|                                                         Returns                                                         ||
|------------------------------------------------------------------------------------------------------------|-------------|
| [Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)`<T>` | this <br /> |

### addMigrations

added in[version 1.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
Builder<T> addMigrations (Migration... migrations)
```

Adds a migration to the builder.

Each Migration has a start and end versions and Room runs these migrations to bring the database to the latest version.

If a migration item is missing between current version and the latest version, Room will clear the database and recreate so even if you have no changes between 2 versions, you should still provide a Migration object to the builder.

A migration can handle more than 1 version (e.g. if you have a faster path to choose when going version 3 to 5 without going to version 4). If Room opens a database at version 3 and latest version is \>= 5, Room will use the migration object that can migrate from 3 to 5 instead of 3 to 4 and 4 to 5.

<br />

|                                                    Parameters                                                     ||
|--------------|-----------------------------------------------------------------------------------------------------|
| `migrations` | `Migration`: The migration object that can modify the database and to the necessary changes. <br /> |

|                                                         Returns                                                         ||
|------------------------------------------------------------------------------------------------------------|-------------|
| [Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)`<T>` | this <br /> |

### allowMainThreadQueries

added in[version 1.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
Builder<T> allowMainThreadQueries ()
```

Disables the main thread query check for Room.

Room ensures that Database is never accessed on the main thread because it may lock the main thread and trigger an ANR. If you need to access the database from the main thread, you should always use async alternatives or manually move the call to a background thread.

You may want to turn this check off for testing.

<br />

|                                                         Returns                                                         ||
|------------------------------------------------------------------------------------------------------------|-------------|
| [Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)`<T>` | this <br /> |

### build

added in[version 1.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
T build ()
```

Creates the databases and initializes it.

By default, all RoomDatabases use in memory storage for TEMP tables and enables recursive triggers.

<br />

|               Returns                ||
|-----|---------------------------------|
| `T` | A new database instance. <br /> |

### fallbackToDestructiveMigration

added in[version 1.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
Builder<T> fallbackToDestructiveMigration ()
```

Allows Room to destructively recreate database tables if[Migration](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration)s that would migrate old database schemas to the latest schema version are not found.

When the database version on the device does not match the latest schema version, Room runs necessary[Migration](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration)s on the database.

If it cannot find the set of[Migration](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration)s that will bring the database to the current version, it will throw an[IllegalStateException](https://developer.android.com/reference/java/lang/IllegalStateException).

You can call this method to change this behavior to re-create the database instead of crashing.

Note that this will delete all of the data in the database tables managed by Room.

<br />

|                                                         Returns                                                         ||
|------------------------------------------------------------------------------------------------------------|-------------|
| [Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)`<T>` | this <br /> |

### fallbackToDestructiveMigrationFrom

added in[version 1.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
Builder<T> fallbackToDestructiveMigrationFrom (int... startVersions)
```

Informs Room that it is allowed to destructively recreate database tables from specific starting schema versions.

This functionality is the same as that provided by[fallbackToDestructiveMigration()](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder#fallbackToDestructiveMigration()), except that this method allows the specification of a set of schema versions for which destructive recreation is allowed.

Using this method is preferable to[fallbackToDestructiveMigration()](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder#fallbackToDestructiveMigration())if you want to allow destructive migrations from some schema versions while still taking advantage of exceptions being thrown due to unintentionally missing migrations.

Note: No versions passed to this method may also exist as either starting or ending versions in the[Migration](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration)s provided to[addMigrations(Migration)](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder#addMigrations(android.arch.persistence.room.migration.Migration...)). If a version passed to this method is found as a starting or ending version in a Migration, an exception will be thrown.

<br />

|                                                  Parameters                                                   ||
|-----------------|----------------------------------------------------------------------------------------------|
| `startVersions` | `int`: The set of schema versions from which Room should use a destructive migration. <br /> |

|                                                         Returns                                                         ||
|------------------------------------------------------------------------------------------------------------|-------------|
| [Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)`<T>` | this <br /> |

### openHelperFactory

added in[version 1.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
Builder<T> openHelperFactory (SupportSQLiteOpenHelper.Factory factory)
```

Sets the database factory. If not set, it defaults to[FrameworkSQLiteOpenHelperFactory](https://developer.android.com/reference/android/arch/persistence/db/framework/FrameworkSQLiteOpenHelperFactory).

<br />

|                                           Parameters                                            ||
|-----------|--------------------------------------------------------------------------------------|
| `factory` | `SupportSQLiteOpenHelper.Factory`: The factory to use to access the database. <br /> |

|                                                         Returns                                                         ||
|------------------------------------------------------------------------------------------------------------|-------------|
| [Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)`<T>` | this <br /> |

### setJournalMode

added in[version 1.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
Builder<T> setJournalMode (RoomDatabase.JournalMode journalMode)
```

Sets the journal mode for this database.

This value is ignored if the builder is initialized with[inMemoryDatabaseBuilder(Context, Class)](https://developer.android.com/reference/android/arch/persistence/room/Room#inMemoryDatabaseBuilder(android.content.Context, java.lang.Class<T>)).

The journal mode should be consistent across multiple instances of[RoomDatabase](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase)for a single SQLite database file.

The default value is[AUTOMATIC](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.JournalMode#AUTOMATIC).

<br />

|                             Parameters                              ||
|---------------|------------------------------------------------------|
| `journalMode` | `RoomDatabase.JournalMode`: The journal mode. <br /> |

|                                                         Returns                                                         ||
|------------------------------------------------------------------------------------------------------------|-------------|
| [Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)`<T>` | this <br /> |

-

  ## Annotations

  - [ColumnInfo](https://developer.android.com/reference/android/arch/persistence/room/ColumnInfo)
  - [ColumnInfo.Collate](https://developer.android.com/reference/android/arch/persistence/room/ColumnInfo.Collate)
  - [ColumnInfo.SQLiteTypeAffinity](https://developer.android.com/reference/android/arch/persistence/room/ColumnInfo.SQLiteTypeAffinity)
  - [Dao](https://developer.android.com/reference/android/arch/persistence/room/Dao)
  - [Database](https://developer.android.com/reference/android/arch/persistence/room/Database)
  - [Delete](https://developer.android.com/reference/android/arch/persistence/room/Delete)
  - [Embedded](https://developer.android.com/reference/android/arch/persistence/room/Embedded)
  - [Entity](https://developer.android.com/reference/android/arch/persistence/room/Entity)
  - [ForeignKey](https://developer.android.com/reference/android/arch/persistence/room/ForeignKey)
  - [ForeignKey.Action](https://developer.android.com/reference/android/arch/persistence/room/ForeignKey.Action)
  - [Ignore](https://developer.android.com/reference/android/arch/persistence/room/Ignore)
  - [Index](https://developer.android.com/reference/android/arch/persistence/room)
  - [Insert](https://developer.android.com/reference/android/arch/persistence/room/Insert)
  - [OnConflictStrategy](https://developer.android.com/reference/android/arch/persistence/room/OnConflictStrategy)
  - [PrimaryKey](https://developer.android.com/reference/android/arch/persistence/room/PrimaryKey)
  - [Query](https://developer.android.com/reference/android/arch/persistence/room/Query)
  - [RawQuery](https://developer.android.com/reference/android/arch/persistence/room/RawQuery)
  - [Relation](https://developer.android.com/reference/android/arch/persistence/room/Relation)
  - [SkipQueryVerification](https://developer.android.com/reference/android/arch/persistence/room/SkipQueryVerification)
  - [Transaction](https://developer.android.com/reference/android/arch/persistence/room/Transaction)
  - [TypeConverter](https://developer.android.com/reference/android/arch/persistence/room/TypeConverter)
  - [TypeConverters](https://developer.android.com/reference/android/arch/persistence/room/TypeConverters)
  - [Update](https://developer.android.com/reference/android/arch/persistence/room/Update)
-

  ## Classes

  - [DatabaseConfiguration](https://developer.android.com/reference/android/arch/persistence/room/DatabaseConfiguration)
  - [InvalidationTracker](https://developer.android.com/reference/android/arch/persistence/room/InvalidationTracker)
  - [InvalidationTracker.Observer](https://developer.android.com/reference/android/arch/persistence/room/InvalidationTracker.Observer)
  - [Room](https://developer.android.com/reference/android/arch/persistence/room/Room)
  - [RoomDatabase](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase)
  - [RoomDatabase.Builder](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Builder)
  - [RoomDatabase.Callback](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.Callback)
  - [RoomDatabase.MigrationContainer](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.MigrationContainer)
  - [RoomWarnings](https://developer.android.com/reference/android/arch/persistence/room/RoomWarnings)
  - [RxRoom](https://developer.android.com/reference/android/arch/persistence/room/RxRoom)
-

  ## Enums

  - [RoomDatabase.JournalMode](https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.JournalMode)
-

  ## Exceptions

  - [EmptyResultSetException](https://developer.android.com/reference/android/arch/persistence/room/EmptyResultSetException)