# 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)

*** ** * ** ***


```
public static class Room
```

<br />

*** ** * ** ***

Entry point for building and initializing a `https://developer.android.com/reference/androidx/room/RoomDatabase`.

## Summary

| ### Public fields |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/room/Room` | `https://developer.android.com/reference/androidx/room/Room#INSTANCE()` |

| ### Public methods |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/room/RoomDatabase.Builder<@https://developer.android.com/reference/androidx/annotation/NonNull T>` | `<T extends https://developer.android.com/reference/androidx/room/RoomDatabase> https://developer.android.com/reference/androidx/room/Room#databaseBuilder(kotlin.String,kotlin.Function0)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html name, @https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull T> factory )` Creates a RoomDatabase.Builder for a persistent database. |
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/room/RoomDatabase.Builder<@https://developer.android.com/reference/androidx/annotation/NonNull T>` | `<T extends https://developer.android.com/reference/androidx/room/RoomDatabase> https://developer.android.com/reference/androidx/room/Room#databaseBuilder(android.content.Context,java.lang.Class,kotlin.String)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull T> klass, https://developer.android.com/reference/java/lang/String.html name )` Creates a RoomDatabase.Builder for a persistent database. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/room/RoomDatabase.Builder<@https://developer.android.com/reference/androidx/annotation/NonNull T>` | `<T extends https://developer.android.com/reference/androidx/room/RoomDatabase> https://developer.android.com/reference/androidx/room/Room#databaseBuilder(android.content.Context,kotlin.String,kotlin.Function0)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html name, @https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull T> factory )` Creates a RoomDatabase.Builder for a persistent database. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/room/Room#getMASTER_TABLE_NAME()()` The master table name where Room keeps its metadata information. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/room/RoomDatabase.Builder<@https://developer.android.com/reference/androidx/annotation/NonNull T>` | `<T extends https://developer.android.com/reference/androidx/room/RoomDatabase> https://developer.android.com/reference/androidx/room/Room#inMemoryDatabaseBuilder(kotlin.Function0)( @https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull T> factory )` Creates a RoomDatabase.Builder for an in memory database. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/room/RoomDatabase.Builder<@https://developer.android.com/reference/androidx/annotation/NonNull T>` | `<T extends https://developer.android.com/reference/androidx/room/RoomDatabase> https://developer.android.com/reference/androidx/room/Room#inMemoryDatabaseBuilder(android.content.Context,kotlin.Function0)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context, @https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull T> factory )` Creates a RoomDatabase.Builder for an in memory database. |
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/room/RoomDatabase.Builder<@https://developer.android.com/reference/androidx/annotation/NonNull T>` | `<T extends https://developer.android.com/reference/androidx/room/RoomDatabase> https://developer.android.com/reference/androidx/room/Room#inMemoryDatabaseBuilder(android.content.Context,java.lang.Class)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull T> klass )` Creates a RoomDatabase.Builder for an in memory database. |

## Public fields

### INSTANCE

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

```
public @NonNull Room INSTANCE
```

## Public methods

### databaseBuilder

```
public final @NonNull RoomDatabase.Builder<@NonNull T> <T extends RoomDatabase> databaseBuilder(
    @NonNull String name,
    @NonNull Function0<@NonNull T> factory
)
```

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 extends https://developer.android.com/reference/androidx/room/RoomDatabase>` | The type of the database class. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html name` | The name of the database file. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull T> factory` | An optional lambda calling `https://developer.android.com/reference/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 |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/room/RoomDatabase.Builder<@https://developer.android.com/reference/androidx/annotation/NonNull T>` | A `RoomDatabaseBuilder<T>` which you can use to create the database. |

### databaseBuilder

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

```
public static final @NonNull RoomDatabase.Builder<@NonNull T> <T extends RoomDatabase> databaseBuilder(
    @NonNull Context context,
    @NonNull Class<@NonNull T> klass,
    String name
)
```

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 extends https://developer.android.com/reference/androidx/room/RoomDatabase>` | The type of the database class. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context` | The context for the database. This is usually the Application context. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull T> klass` | The abstract class which is annotated with `https://developer.android.com/reference/androidx/room/Database` and extends `https://developer.android.com/reference/androidx/room/RoomDatabase`. |
| `https://developer.android.com/reference/java/lang/String.html name` | The name of the database file. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/room/RoomDatabase.Builder<@https://developer.android.com/reference/androidx/annotation/NonNull T>` | A `RoomDatabaseBuilder<T>` which you can use to create the database. |

### databaseBuilder

```
public final @NonNull RoomDatabase.Builder<@NonNull T> <T extends RoomDatabase> databaseBuilder(
    @NonNull Context context,
    @NonNull String name,
    @NonNull Function0<@NonNull T> factory
)
```

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 extends https://developer.android.com/reference/androidx/room/RoomDatabase>` | The type of the database class. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context` | The context for the database. This is usually the Application context. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html name` | The name of the database file. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull T> factory` | An optional lambda calling `https://developer.android.com/reference/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 |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/room/RoomDatabase.Builder<@https://developer.android.com/reference/androidx/annotation/NonNull T>` | A `RoomDatabaseBuilder<T>` which you can use to create the database. |

### getMASTER_TABLE_NAME

```
public final @NonNull String getMASTER_TABLE_NAME()
```

The master table name where Room keeps its metadata information.

### inMemoryDatabaseBuilder

```
public final @NonNull RoomDatabase.Builder<@NonNull T> <T extends RoomDatabase> inMemoryDatabaseBuilder(
    @NonNull Function0<@NonNull T> factory
)
```

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 extends https://developer.android.com/reference/androidx/room/RoomDatabase>` | The type of the database class. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull T> factory` | An optional lambda calling `https://developer.android.com/reference/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 |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/room/RoomDatabase.Builder<@https://developer.android.com/reference/androidx/annotation/NonNull T>` | A `RoomDatabaseBuilder<T>` which you can use to create the database. |

### inMemoryDatabaseBuilder

```
public final @NonNull RoomDatabase.Builder<@NonNull T> <T extends RoomDatabase> inMemoryDatabaseBuilder(
    @NonNull Context context,
    @NonNull Function0<@NonNull T> factory
)
```

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 extends https://developer.android.com/reference/androidx/room/RoomDatabase>` | The type of the database class. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context` | The context for the database. This is usually the Application context. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull T> factory` | An optional lambda calling `https://developer.android.com/reference/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 |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/room/RoomDatabase.Builder<@https://developer.android.com/reference/androidx/annotation/NonNull T>` | A `RoomDatabaseBuilder<T>` which you can use to create the database. |

### inMemoryDatabaseBuilder

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

```
public static final @NonNull RoomDatabase.Builder<@NonNull T> <T extends RoomDatabase> inMemoryDatabaseBuilder(
    @NonNull Context context,
    @NonNull Class<@NonNull T> klass
)
```

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 extends https://developer.android.com/reference/androidx/room/RoomDatabase>` | The type of the database class. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context` | The context for the database. This is usually the Application context. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull T> klass` | The abstract class which is annotated with `https://developer.android.com/reference/androidx/room/Database` and extends `https://developer.android.com/reference/androidx/room/RoomDatabase`. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/room/RoomDatabase.Builder<@https://developer.android.com/reference/androidx/annotation/NonNull T>` | A `RoomDatabaseBuilder<T>` which you can use to create the database. |