mappers (i.e. Room, GreenDAO) – Need to write SQL for every request – No auto-completion, no type safety – Migrations are scary – Realm – Complex – Inheritance-based – Custom types (e.g. JodaTime) suck – Weird threading requirements – Migrations are scary
For ambiguous schema modifications (i.e. changing the name or type of a property), annotate your entity class with @Uid, build your project and follow the instructions – UIDs are stored in a file called default.json. Make sure to add it to Git.