当您使用 Room 持久性库存储应用数据时,可以定义实体来表示要存储的对象。每个实体都对应于关联的 Room 数据库中的一个表,并且实体的每个实例都表示相应表中的一行数据。
使用 Room 实体,您无需编写任何 SQL 代码即可定义数据库架构。
实体详解
您可以将每个 Room 实体定义为带有 @Entity 注解的类。Room 实体包含数据库中相应表中的每一列的属性,包括构成主键的一个或多个列。
以下代码是一个实体的示例,该实体定义了一个 User 表,其中包含 ID 列、名字列和姓氏列:
@Entity data class User( @PrimaryKey val id: Int, val firstName: String, val lastName: String )
默认情况下,Room 将类名称用作数据库表名称。如果您希望表具有不同的名称,请设置 @Entity 注解的 tableName 属性。同样,Room 默认使用属性名称作为数据库中的列名称。如果您希望列具有不同的名称,请将 @ColumnInfo 注解添加到该属性并设置 name 属性。以下示例展示了表及其所含列的自定义名称:
@Entity(tableName = "users") data class User( @PrimaryKey val id: Int, @ColumnInfo(name = "first_name") val firstName: String, @ColumnInfo(name = "last_name") val lastName: String )