This course will be retired on July 14, 2025.
Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Well done!
You have completed Data Persistence with Room!
You have completed Data Persistence with Room!
Preview
In this video we'll talk about what pieces we need to create a Room database, and we'll start creating one!
Code
implementation 'android.arch.persistence.room:runtime:1.1.1-rc1'
kapt 'android.arch.persistence.room:compiler:1.1.1-rc1'
Related Links
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
[MUSIC]
0:00
[SOUND] We've solved the first problem.
0:03
Let's move on to the second one.
0:06
We need to implement a way for
our users to save their pizzas.
0:08
To do this,
0:12
we'll be using the Room library to store
pizza information in a SQLite database.
0:12
Room makes maintaining a database
a lot easier than it used to be.
0:17
Instead of having to write all the SQL
yourself, Room gives us a set of
0:21
components that handle a lot of
that work behind the scenes.
0:25
Let's take a minute to look
at these components and
0:28
see how it all fits together.
0:31
The first component of a RoomDatabase is
an entity, which represents a table and
0:32
the database.
0:37
Stepping up from an entity, we have data
access objects, also referred to as DAOs.
0:38
A data access object is where we'll
keep all the queries we need for
0:44
a specific table.
0:47
At the very top is the RoomDatabase,
which groups together all of the DOAs and
0:49
entities and provides a single
point of entry from within the app.
0:54
We'll talk more about each
of those in just a bit.
0:58
But before we can start on anything,
1:00
we'll need to decide on
the structure of our database.
1:03
What tables does it have?
1:05
What columns are in those tables?
1:07
And what relationships do we need
to maintain between columns?
1:08
For us, we'll have a Pizza table and
a Toppings table.
1:13
Both with id primary keys.
1:16
But while this lets us
store some information,
1:19
it's not giving us the whole story.
1:21
We're missing out on which
toppings belong on which pizza.
1:23
To get this information,
we'll need to add a third table
1:27
to keep track of all the pizza and
topping combinations.
1:29
This PizzaTopping table will
have two columns which are both
1:33
foreign keys to other tables.
1:36
And together, those two columns
also make up the primary key.
1:38
If you'd like to read more about
why we need the PizzaTopping table,
1:42
check out the article below on how
to handle a many-many relationship.
1:47
Okay, now that we've got a better
idea of what we have to do,
1:51
let's start building up from the bottom
and get to work on those entities.
1:54
Heading back to Android Studio,
1:58
I'll clean up my workspace a little
bit by closing all of these tabs.
2:00
Then the first thing we need to do is
add a couple import statements for
2:04
the Room library.
2:08
Let's head over to our apps
build.gradle file and copy and
2:10
paste in these two lines to the bottom
of the dependencies section.
2:13
Also, they've been updating these
libraries somewhat frequently.
2:18
So if you see a newer version warning,
2:22
feel free to use Alt+Enter to
upgrade to the newest version.
2:24
Then let's sync the project, And
now we can go about using our entities.
2:28
Let's head over to the Pizza class and
add a line above the class declaration.
2:35
And then type @Entity and
hit Enter to import it.
2:42
And there we go,
our Pizza class is now a Pizza entity.
2:46
However, all entities
require a primary key.
2:51
So we're not quite done yet.
2:55
To tell Room which column
is the primary key,
2:57
we just need to add the @PrimaryKey
annotation before that column.
3:00
Let's add a line above id and
then type, @PrimaryKey.
3:04
You may need to use
Alt+Enter to import it.
3:14
Awesome, that's it for our Pizza entity.
3:17
Now let's update the Topping class.
3:20
Let's add the @ entity annotation,
and then the @ primary key annotation.
3:24
You could also put it on the same
line as the id if you prefer.
3:32
Now that we've got Pizza and
Topping entities,
3:37
it's time to create the PizzaTopping
entity, which we'll do in the next video.
3:40
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up