Introduction
- This series is going to be where I put all my Android notes. As I learn something new about Android development I will put in this tutorial series
- Read the full documentation HERE
What is Room?
- The
Room persistence library
provides an abstraction layer over SQLite to allow for more robust database access while harnessing the fill power ofSQLite
.
What is SQLite?
As the official SQLite documentation states,
do not be mislead by the lite in the name. SQLite is a full featured SQL implementation
. This means that basically all the same rules and queries you can do with SQL you can also do with SQLite. So terms liketable
,row
orcolumn
mean the exact same thing as any other SQL based databaseHowever, using SQLite can result in a lot of boiler plate code that is tedious and error prone. That is where Room comes to the rescue. Room's entire job is the make working with SQLite a whole lot easier.
Defining entities
- What is an entity? Well, when using the Room persistence library we define entities to represent the objects that we want to store. Each entity corresponds to a table in the associated Room database, and each instance of an entity represents a row of data in the corresponding table. We define an entity by annotating any Java class with the
@Entity
annotation:
@Entity(tableName = "calves")
public class Calf {
@PrimaryKey(autoGenerate = true)
private Long id;
@NonNull
@ColumnInfo(name="tag_number")
public String tagNumber;
//Constructor, getters and setters below
}
- When we use the
@Entity
annotation all the fields in the class are now mapped to columns in the database table. Each entity that we define must also have at least one field annotated with the@PrimaryKey
annotation. This field must be unique as it will act as the identifier in the underlying SQLite database. Notice that I haveautoGenerate = true
in the primary key field. This tells Android that we want the SQLite database to handle the generation of this unique field, which is great because then we do not have to deal with super complex code trying to keep the id unique. - You can also notice that we use
@ColumnInfo(name="tag_number")
to change the name of the column and@Entity(tableName = "calves")
to change the whole table's name in the database. - Now we have both created a simple and easy to use database Entity with Room
Conclusion
- Thank you for taking the time out of your day to read this blog post of mine. If you have any questions or concerns please comment below or reach out to me on Twitter.
Top comments (0)