当前位置: 首页 > news >正文

眼科医院网站开发策划兰州市城乡建设局网官网站

眼科医院网站开发策划,兰州市城乡建设局网官网站,网站备案表是什么,建设部促进中心网站一、介绍 Android Room 是 Android 官方提供的一个轻量级数据库框架,用于在 Android 应用程序中管理数据持久性。它简化了数据库访问,提供了更安全、更快速的数据存储方式,并使得数据操作更加便捷。 二、Room的特点(八股文可以参考) 以下是…

一、介绍

        Android Room 是 Android 官方提供的一个轻量级数据库框架,用于在 Android 应用程序中管理数据持久性。它简化了数据库访问,提供了更安全、更快速的数据存储方式,并使得数据操作更加便捷。

二、Room的特点(八股文可以参考)

以下是关于 Android Room 数据库的一些关键点:

  1. 数据持久性:Room 框架使您能够轻松地将数据持久化到数据库中,从而在应用程序的生命周期内保持数据的可用性。
  2. SQL 查询简化:使用 Room,您可以使用标准的 SQL 查询语言来查询数据库,同时避免了直接编写 SQL 代码的需要。
  3. 事务管理:Room 自动处理事务,确保数据的一致性和完整性。
  4. 缓存和同步:Room 支持将数据缓存在内存中,并在需要时同步到数据库。
  5. 生命周期感知:Room 的生命周期感知特性意味着它只在应用程序处于活动状态时执行数据库操作,从而优化了性能。
  6. 数据库迁移:随着应用程序的发展和更新,您可能需要更改数据库模式。Room 提供了简便的迁移策略来处理模式更改。
  7. 事务回滚:当遇到问题时,Room 会自动回滚事务,确保数据的完整性。
  8. 支持多种数据类型:Room 支持各种数据类型,如整型、浮点型、字符串等。
  9. 事务隔离级别:根据需要设置事务的隔离级别,以控制并发操作时的数据一致性。
  10. 与其他 SQLite 工具兼容:由于 Room 在内部使用 SQLite,因此它与所有标准的 SQLite 工具和库兼容。

三、数据库升级问题

Room数据库是通过Entity来关联表。一个实体就是一张表,如果实体发生变化了表结构自然发生了变化。如果我们不对数据库进行升级,通过sql事务提交修改,那么这张表在后期会和历史表发生冲突,这是开发者最头疼的问题,那么如果处理这个问题?

处理升级问题,我们应该了解Room是通过什么来管理的。

1.库的管理

数据库管理,其实是数据库的创建,是通过Database,里面最核心的就是version。如果第一次创建,设置一个版本号。

这个版本号会记录当前表的信息,如果表发生了变化,在初始化表的时候,并没有通过升级版本,修改表结构,就会导致在Dao执行事务的时候报错。

2.如何修改表结构

在修改表结构,Room也提供了合并的支持。分为两种

第一种:2.4.0之前的版本,手动

通过数据库创建的时候,新增Migration

Room.databaseBuilder(context,MyDataBase.class,"").addMigrations()

将所有版本的表结构修改的版本号,对应的Migration都添加进来。

    private Migration migration_1_2 = new Migration(1, 2) {@Overridepublic void migrate(@NonNull SupportSQLiteDatabase database) {//一般新增database.execSQL("ALTER TABLE table_name ADD column_name datatype");//修改表名或者数据结构database.execSQL("ALTER TABLE table_name MODIFY COLUMN column_name datatype");//删除database.execSQL("ALTER TABLE table_name DROP COLUMN column_name");}};

Migration:

需要指定就版本与新版本,然后在创建库的时候会进行坚持。

注意:

在使用Room数据的时候,一定要小心,如果你的数据库发生了变化,一定要及时新增migration,否则时间一长,可能改的面目全非。所以,在新设计表的时候一定要要注意以后的扩展

第二种:自动升级方案

在2.4.0以后,升级可以通过@DataBase里面的autoMigrations来完成,但是需要Java11支持

public @interface Database {Class<?>[] entities();Class<?>[] views() default {};int version();*/boolean exportSchema() default true;@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)Class<?>[] autoMigrations() default {};
}
@Database(autoMigrations = {@AutoMigration(from = 1,to = 2,spec = MyDataBase.AutoMirgation1.class )})

自动版本基本和手动差不多,只是采取kapt,和注入方式,不需要开发者再手写代码,降低了开发难度。

您可以使用 AutoMigrationSpec 为 Room 提供正确生成迁移路径所需的额外信息。定义一个在 RoomDatabase 类中实现 AutoMigrationSpec 的静态类,并为其添加以下一项或多项注解:

  • @DeleteTable :删除表
  • @RenameTable:重新命名表名
  • @DeleteColumn:删除列
  • @RenameColumn:重新命名列

自动提供了上面几种:

    @DeleteColumn(tableName = "",columnName ="")static   class AutoMirgation1 implements AutoMigrationSpec{@Overridepublic void onPostMigrate(@NonNull SupportSQLiteDatabase db) {AutoMigrationSpec.super.onPostMigrate(db);}}

如果需要新增,同样也可以在db里面新增,通过execSql语句来完成。

三、代码里过多的Migration是否可以删除?

不可以,即使你表发生了很大的变化,你也不能随便删除之前修改的,如果删除了,会导致之前有很多用户表有升级到最新,导致后期升级上来,丢了中间的表变化,这样早执行Dao的时候,直接crash。所以最好的办法是在创建自己的RoomDataBase的时候,所有关于变化的都放在数据库类中,方便管理

四、总结

通过以上的分析,我们详细的明白Room数据的升级或者数据迁移的两种方式,手动需要自己手写代码,自动也可以手写,但是自动需要JDK 11支持。还有就是手动mirgation的时候要保留之前的,不能删除,否则对之前的版本会造成无法升级的影响

http://www.yayakq.cn/news/951327/

相关文章:

  • 徐州自助建站系统电商法规定企业网站必须做3年
  • 企业网站互动交流模块京东商城网官网 网上购物平台
  • 源码网站下载网址站长之家
  • 淘宝网站模板是什么做的网站空间带宽
  • 网站后台管理模块贵阳国家经济技术开发区门户网站
  • 专业做网站 优帮云图片链接怎么生成
  • 凡科建设网站还用买服务器吗移动互联网的应用论文
  • asp与sql网站建设呼和浩特企业网站建设
  • 银川做网站的有哪些photoshop安卓版下载
  • 网站开发和商城的科目深圳画册设计印刷公司
  • 广告推广网站株洲第三方网站建设哪家好
  • 淮北网站建设推广网站历史快照
  • 网站建设介绍建站官网模板
  • 网站建设建设意见手机app应用软件开发
  • 高要区公路建设规划局网站商城分销
  • dede小说网站模板网站建设招聘需求
  • 网站建设有关要求免费入驻的电商平台
  • 怎么查询公司网站备案网站后台策划书
  • 网站通栏代码wordpress上传主题
  • 网站上qq未启用网站横幅js代码
  • 网站怎么设置手机模板管理济南市规划局官网
  • 做宝玉石交易的网站有哪些装修效果图实景案例
  • 盐城市网站网站页面报价
  • 沈阳市铁西区建设局网站江西宗杰建设工程有限公司网站
  • 沈阳网站开发技术公司网站如何导入织梦cms
  • 网站会员注册模板域名网站网址
  • 泉州网站建设培训成都网页设计的网站建设
  • 每个网站都有后台吗个人可以做外贸的网站
  • 基层建设杂志网站网页游戏源码怎么获取
  • 贵阳做网站kuhugz网站搜索不到公司网站