一、对象关系映射 - ORM / Object Relational Mapping
Android 系统中使用的数据库是 SQLite 关系型数据库 , 使用 Android 提供的 api 访问 SQLite 数据库非常繁琐 , 由此出现了很多 ORM 框架 ;
ORM 英文全称 Object Relational Mapping , 对象关系映射 ;
对象关系映射 ORM 是一种编程技术 , 面向对象编程语言 与 关系型数据库 之间的 映射 ;
- 对象 指的是 面向对象编程语言 ,
- 关系 指的是 关系型数据库 ;
借助 ORM 对象关系映射 框架 访问数据库 , 可以 简化数据库操作流程 , 开发人员使用面向对象 API 与 数据库进行交互 , 比编写复杂的 SQL 语句操作数据库 要简单很多 ;
ORM 框架常使用 元数据 将 数据库表 与 编程语言中的类 进行映射 , 数据库表字段 与 类中的字段 一一对应 , 常用的元数据有 :
- 注解
- 配置文件
ORM 框架优点 :
- 提高了开发效率 : 使用 ORM 操作数据库 简化了数据库操作过程 , 令代码更容易开发维护 ;
- 提高了可移植性 : 使用 ORM 框架操作数据库 , 可以在 不改变代码的前提下 , 更换底层数据库 ;
- 提高了性能 : 可以 总体优化 ORM 框架的 增删查改 操作性能 ;
- 提高了安全性 : 可避免直接使用 SQL 语句查询时 , 产生的 SQL 注入攻击 ;
常见的 ORM 框架 :
- Android 平台 : GreenDao / ORMLite ;
- JavaEE 平台 : Hibernate ;
- .NET 平台 : Entity Framework ;
- Python 平台 : DiangoORM ;
在 Android 中 , Google 官方提供了一个基于 SQLite 关系型数据库操作封装的 ORM 框架 , Room 框架 ;
二、Room 框架的组成部分
1、@Entity / @Dao / @Database 注解
Room 框架中的重要注解 :
-
@Entity 注解 : 用于修饰 JavaBean 实体类 , 对应数据库中的一张表结构 ;
-
@Dao 注解 : 用于修饰 数据库访问对象 类 , 其中定义了 数据库的 增删改查 函数 ;
-
@Database 注解 :
修饰 数据库持有者 , 数据库持有者 就是 数据库链接对象 , 是 应用持久化数据底层连接的接入点 ;
- 使用 @Database 注解 修饰的类 , 该类必须继承 RoomDatabase 抽象类 ;
- 在该注解中 , 需要定义 数据库 相关的 实体类 列表 ;
- 数据库持有者 包含 没有参数的抽象方法 , 该方法返回 Dao 对象 ;