# Migration

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:[Fields](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration#lfields)\|[Ctors](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration#pubctors)\|[Methods](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration#inhmethods)  

# Migration

| 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.migration.Migration](https://developer.android.com/reference/androidx/room/migration/Migration)instead.

`
public


abstract
class
Migration
`  
`

extends Object


``


`

|---|---------------------------------------------------|
| java.lang.Object                                     ||
| ↳ | android.arch.persistence.room.migration.Migration |

<br />

*** ** * ** ***

Base class for a database migration.

Each migration can move between 2 versions that are defined by[startVersion](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration#startVersion)and[endVersion](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration#endVersion).

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.

If there are not enough migrations provided to move from the current version to 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.

## Summary

|                                                                     ### Fields                                                                     ||
|---------------------|-------------------------------------------------------------------------------------------------------------------------------|
| ` public final int` | [endVersion](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration#endVersion) <br />     |
| ` public final int` | [startVersion](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration#startVersion) <br /> |

|                                                                                                       ### Public constructors                                                                                                       ||
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| ` `[Migration](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration#Migration(int, int))`(int startVersion, int endVersion) ` Creates a new migration between`startVersion`and`endVersion`. |

|                                                                                                                                                                     ### Public methods                                                                                                                                                                      ||
|------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` abstract void` | ` `[migrate](https://developer.android.com/reference/android/arch/persistence/room/migration/Migration#migrate(android.arch.persistence.db.SupportSQLiteDatabase))`(`[SupportSQLiteDatabase](https://developer.android.com/reference/android/arch/persistence/db/SupportSQLiteDatabase)` database) ` Should run the necessary migrations. |

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

## Fields

### endVersion

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

```
int endVersion
```

<br />

<br />

### startVersion

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

```
int startVersion
```

<br />

<br />

## Public constructors

### Migration

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

```
Migration (int startVersion, 
                int endVersion)
```

Creates a new migration between`startVersion`and`endVersion`.

<br />

|                                           Parameters                                           ||
|----------------|--------------------------------------------------------------------------------|
| `startVersion` | `int`: The start version of the database. <br />                               |
| `endVersion`   | `int`: The end version of the database after this migration is applied. <br /> |

## Public methods

### migrate

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

```
void migrate (SupportSQLiteDatabase database)
```

Should run the necessary migrations.

This class cannot access any generated Dao in this method.

This method is already called inside a transaction and that transaction might actually be a composite transaction of all necessary`Migration`s.

<br />

|                            Parameters                             ||
|------------|-------------------------------------------------------|
| `database` | `SupportSQLiteDatabase`: The database instance <br /> |

-

  ## Classes

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