# Room

# Room

Artifact:[androidx.room:room-runtime](https://developer.android.com/jetpack/androidx/releases/room)  
[View Source](https://cs.android.com/search?q=file:androidx/room/Room.+class:androidx.room.Room)  
Added in[2.0.0](https://developer.android.com/jetpack/androidx/releases/room#2.0.0)

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/androidx/room/Room "View this page in Java")
Common/AllAndroid/JVMNative/C/iOSJavaScript
  - Cmn  

  ```
  object Room
  ```

*** ** * ** ***

Entry point for building and initializing a[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase).

## Summary

|                                                  ### Public functions                                                   |
|-------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|
| `inline `[RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>` | `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`> `[databaseBuilder](https://developer.android.com/reference/kotlin/androidx/room/Room#databaseBuilder(kotlin.String,kotlin.Function0))`(name: `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`, noinline factory: () `->` T)` Creates a RoomDatabase.Builder for a persistent database.                                                                                                                                                                                        | android |
| `inline `[RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>` | `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`> `[databaseBuilder](https://developer.android.com/reference/kotlin/androidx/room/Room#databaseBuilder(kotlin.String,kotlin.Function0))`(name: `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`, noinline factory: () `->` T)` Creates a RoomDatabase.Builder for a persistent database.                                                                                                                                                                                        | N       |
| [RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>`          | `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`> `[databaseBuilder](https://developer.android.com/reference/kotlin/androidx/room/Room#databaseBuilder(android.content.Context,java.lang.Class,kotlin.String))`(` ` context: `[Context](https://developer.android.com/reference/android/content/Context.html)`,` ` klass: `[Class](https://developer.android.com/reference/java/lang/Class.html)`<T>,` ` name: `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`?` `)` Creates a RoomDatabase.Builder for a persistent database. | android |
| `inline `[RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>` | `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`> `[databaseBuilder](https://developer.android.com/reference/kotlin/androidx/room/Room#databaseBuilder(android.content.Context,kotlin.String,kotlin.Function0))`(` ` context: `[Context](https://developer.android.com/reference/android/content/Context.html)`,` ` name: `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`,` ` noinline factory: () `->` T` `)` Creates a RoomDatabase.Builder for a persistent database.                                                       | android |
| `inline `[RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>` | `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`> `[inMemoryDatabaseBuilder](https://developer.android.com/reference/kotlin/androidx/room/Room#inMemoryDatabaseBuilder(kotlin.Function0))`(noinline factory: () `->` T)` Creates a RoomDatabase.Builder for an in memory database.                                                                                                                                                                                                                                                                                 | android |
| `inline `[RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>` | `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`> `[inMemoryDatabaseBuilder](https://developer.android.com/reference/kotlin/androidx/room/Room#inMemoryDatabaseBuilder(kotlin.Function0))`(noinline factory: () `->` T)` Creates a RoomDatabase.Builder for an in memory database.                                                                                                                                                                                                                                                                                 | N       |
| `inline `[RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>` | `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`> `[inMemoryDatabaseBuilder](https://developer.android.com/reference/kotlin/androidx/room/Room#inMemoryDatabaseBuilder(android.content.Context,kotlin.Function0))`(` ` context: `[Context](https://developer.android.com/reference/android/content/Context.html)`,` ` noinline factory: () `->` T` `)` Creates a RoomDatabase.Builder for an in memory database.                                                                                                                                                   | android |
| [RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>`          | `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`> `[inMemoryDatabaseBuilder](https://developer.android.com/reference/kotlin/androidx/room/Room#inMemoryDatabaseBuilder(android.content.Context,java.lang.Class))`(context: `[Context](https://developer.android.com/reference/android/content/Context.html)`, klass: `[Class](https://developer.android.com/reference/java/lang/Class.html)`<T>)` Creates a RoomDatabase.Builder for an in memory database.                                                                                                        | android |

|                               ### Public properties                               |
|-----------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|
| [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html) | [MASTER_TABLE_NAME](https://developer.android.com/reference/kotlin/androidx/room/Room#MASTER_TABLE_NAME()) The master table name where Room keeps its metadata information. | Cmn android N |

## Public functions

### databaseBuilder

android  

```
inline fun <T : RoomDatabase> databaseBuilder(
    name: String,
    noinline factory: () -> T = { findAndInstantiateDatabaseImpl(T::class.java) }
): RoomDatabase.Builder<T>
```

Creates a RoomDatabase.Builder for a persistent database. Once a database is built, you should keep a reference to it and re-use it.  

|                                             Parameters                                              |
|-----------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`>` | The type of the database class.                                                                                                                                                                                                                                                                                          |
| `name: `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)           | The name of the database file.                                                                                                                                                                                                                                                                                           |
| `noinline factory: () `->` T = { findAndInstantiateDatabaseImpl(T::class.java) }`                   | An optional lambda calling[RoomDatabaseConstructor.initialize](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabaseConstructor#initialize())corresponding to the database class of this builder. If not provided then reflection is used to find and instantiate the database implementation class. |

|                                                    Returns                                                     |
|----------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
| [RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>` | A`RoomDatabaseBuilder<T>`which you can use to create the database. |

### databaseBuilder

N  

```
inline fun <T : RoomDatabase> databaseBuilder(
    name: String,
    noinline factory: () -> T = { findDatabaseConstructorAndInitDatabaseImpl(T::class) }
): RoomDatabase.Builder<T>
```

Creates a RoomDatabase.Builder for a persistent database. Once a database is built, you should keep a reference to it and re-use it.  

|                                             Parameters                                              |
|-----------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`>` | The type of the database class.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `name: `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)           | The name of the database file.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `noinline factory: () `->` T = { findDatabaseConstructorAndInitDatabaseImpl(T::class) }`            | An optional lambda calling[RoomDatabaseConstructor.initialize](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabaseConstructor#initialize())corresponding to the database class of this builder. If not provided then the associated[RoomDatabaseConstructor](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabaseConstructor)is searched via the[ConstructedBy](https://developer.android.com/reference/kotlin/androidx/room/ConstructedBy)annotation and is used to instantiate the database implementation class. |

|                                                    Returns                                                     |
|----------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
| [RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>` | A`RoomDatabaseBuilder<T>`which you can use to create the database. |

### databaseBuilder

android  
Added in[2.0.0](https://developer.android.com/jetpack/androidx/releases/room#2.0.0)  

```
fun <T : RoomDatabase> databaseBuilder(
    context: Context,
    klass: Class<T>,
    name: String?
): RoomDatabase.Builder<T>
```

Creates a RoomDatabase.Builder for a persistent database. Once a database is built, you should keep a reference to it and re-use it.  

|                                             Parameters                                              |
|-----------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`>` | The type of the database class.                                                                                                                                                                                                  |
| `context: `[Context](https://developer.android.com/reference/android/content/Context.html)          | The context for the database. This is usually the Application context.                                                                                                                                                           |
| `klass: `[Class](https://developer.android.com/reference/java/lang/Class.html)`<T>`                 | The abstract class which is annotated with[Database](https://developer.android.com/reference/kotlin/androidx/room/Database)and extends[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase). |
| `name: `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`?`        | The name of the database file.                                                                                                                                                                                                   |

|                                                    Returns                                                     |
|----------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
| [RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>` | A`RoomDatabaseBuilder<T>`which you can use to create the database. |

### databaseBuilder

android  

```
inline fun <T : RoomDatabase> databaseBuilder(
    context: Context,
    name: String,
    noinline factory: () -> T = { findAndInstantiateDatabaseImpl(T::class.java) }
): RoomDatabase.Builder<T>
```

Creates a RoomDatabase.Builder for a persistent database. Once a database is built, you should keep a reference to it and re-use it.  

|                                             Parameters                                              |
|-----------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`>` | The type of the database class.                                                                                                                                                                                                                                                                                          |
| `context: `[Context](https://developer.android.com/reference/android/content/Context.html)          | The context for the database. This is usually the Application context.                                                                                                                                                                                                                                                   |
| `name: `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)           | The name of the database file.                                                                                                                                                                                                                                                                                           |
| `noinline factory: () `->` T = { findAndInstantiateDatabaseImpl(T::class.java) }`                   | An optional lambda calling[RoomDatabaseConstructor.initialize](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabaseConstructor#initialize())corresponding to the database class of this builder. If not provided then reflection is used to find and instantiate the database implementation class. |

|                                                    Returns                                                     |
|----------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
| [RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>` | A`RoomDatabaseBuilder<T>`which you can use to create the database. |

### inMemoryDatabaseBuilder

android  

```
inline fun <T : RoomDatabase> inMemoryDatabaseBuilder(
    noinline factory: () -> T = { findAndInstantiateDatabaseImpl(T::class.java) }
): RoomDatabase.Builder<T>
```

Creates a RoomDatabase.Builder for an in memory database. Information stored in an in memory database disappears when the process is killed. Once a database is built, you should keep a reference to it and re-use it.  

|                                             Parameters                                              |
|-----------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`>` | The type of the database class.                                                                                                                                                                                                                                                                                          |
| `noinline factory: () `->` T = { findAndInstantiateDatabaseImpl(T::class.java) }`                   | An optional lambda calling[RoomDatabaseConstructor.initialize](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabaseConstructor#initialize())corresponding to the database class of this builder. If not provided then reflection is used to find and instantiate the database implementation class. |

|                                                    Returns                                                     |
|----------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
| [RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>` | A`RoomDatabaseBuilder<T>`which you can use to create the database. |

### inMemoryDatabaseBuilder

N  

```
inline fun <T : RoomDatabase> inMemoryDatabaseBuilder(
    noinline factory: () -> T = { findDatabaseConstructorAndInitDatabaseImpl(T::class) }
): RoomDatabase.Builder<T>
```

Creates a RoomDatabase.Builder for an in memory database. Information stored in an in memory database disappears when the process is killed. Once a database is built, you should keep a reference to it and re-use it.  

|                                             Parameters                                              |
|-----------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`>` | The type of the database class.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `noinline factory: () `->` T = { findDatabaseConstructorAndInitDatabaseImpl(T::class) }`            | An optional lambda calling[RoomDatabaseConstructor.initialize](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabaseConstructor#initialize())corresponding to the database class of this builder. If not provided then the associated[RoomDatabaseConstructor](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabaseConstructor)is searched via the[ConstructedBy](https://developer.android.com/reference/kotlin/androidx/room/ConstructedBy)annotation and is used to instantiate the database implementation class. |

|                                                    Returns                                                     |
|----------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
| [RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>` | A`RoomDatabaseBuilder<T>`which you can use to create the database. |

### inMemoryDatabaseBuilder

android  

```
inline fun <T : RoomDatabase> inMemoryDatabaseBuilder(
    context: Context,
    noinline factory: () -> T = { findAndInstantiateDatabaseImpl(T::class.java) }
): RoomDatabase.Builder<T>
```

Creates a RoomDatabase.Builder for an in memory database. Information stored in an in memory database disappears when the process is killed. Once a database is built, you should keep a reference to it and re-use it.  

|                                             Parameters                                              |
|-----------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`>` | The type of the database class.                                                                                                                                                                                                                                                                                          |
| `context: `[Context](https://developer.android.com/reference/android/content/Context.html)          | The context for the database. This is usually the Application context.                                                                                                                                                                                                                                                   |
| `noinline factory: () `->` T = { findAndInstantiateDatabaseImpl(T::class.java) }`                   | An optional lambda calling[RoomDatabaseConstructor.initialize](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabaseConstructor#initialize())corresponding to the database class of this builder. If not provided then reflection is used to find and instantiate the database implementation class. |

|                                                    Returns                                                     |
|----------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
| [RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>` | A`RoomDatabaseBuilder<T>`which you can use to create the database. |

### inMemoryDatabaseBuilder

android  
Added in[2.0.0](https://developer.android.com/jetpack/androidx/releases/room#2.0.0)  

```
fun <T : RoomDatabase> inMemoryDatabaseBuilder(context: Context, klass: Class<T>): RoomDatabase.Builder<T>
```

Creates a RoomDatabase.Builder for an in memory database. Information stored in an in memory database disappears when the process is killed. Once a database is built, you should keep a reference to it and re-use it.  

|                                             Parameters                                              |
|-----------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `<T : `[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase)`>` | The type of the database class.                                                                                                                                                                                                  |
| `context: `[Context](https://developer.android.com/reference/android/content/Context.html)          | The context for the database. This is usually the Application context.                                                                                                                                                           |
| `klass: `[Class](https://developer.android.com/reference/java/lang/Class.html)`<T>`                 | The abstract class which is annotated with[Database](https://developer.android.com/reference/kotlin/androidx/room/Database)and extends[RoomDatabase](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase). |

|                                                    Returns                                                     |
|----------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
| [RoomDatabase.Builder](https://developer.android.com/reference/kotlin/androidx/room/RoomDatabase.Builder)`<T>` | A`RoomDatabaseBuilder<T>`which you can use to create the database. |

## Public properties

### MASTER_TABLE_NAME

CmnandroidN  
Added in[2.0.0](https://developer.android.com/jetpack/androidx/releases/room#2.0.0)  

```
val MASTER_TABLE_NAME: String
```

The master table name where Room keeps its metadata information.