Creating an Entity model
Room, much like an SQL database, is optionally asymmetric; what you write to it might not be in the exact same format as what you read from it. When you write to a Room
database, you save Entity
objects, but when you read, you can read virtually any Java object. This allows you to define object models that best suit your user interface, and load them with JOIN
queries rather than resorting to one or more additional queries for each object you wish to present to the user. While JOIN
queries might be overly expensive on a server, on a mobile device they are often significantly faster than a multiquery alternative. As such, when defining an entity model, it's worth considering what you will need to save in your database as well as what specific fields you will need on your user interface. The data you need to write to storage becomes your entity, while the fields on your user interface become fields in Java objects that can be queried through Room.
An Entity
class in...