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

代做网站平台网址大全2345仙踪林

代做网站平台,网址大全2345仙踪林,百度网站建设需要钱,过期的网站域名一、介绍 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/841974/

相关文章:

  • 网站功能设计的内容济南市住监局官网
  • 什么网站好哪些属于功能型网站
  • 执法局网站建设目的wordpress默认模板
  • 素材网站都有哪些icp备案是什么
  • 网页设计师必须知道的网站长沙网站建设 芙蓉区
  • 怎么销售网站建设长沙广告网页设计最新招聘信息
  • 建设部勘察设计网站腾讯朋友圈广告代理
  • 网站推广免费推广网站如果给公司做网站
  • 网站域名有了 网站如何建设大品牌vi设计
  • 做网站找个人还是找公司好财务网站模板
  • 中国wix网站制作公司介绍网络营销的短文
  • 自己如何做网站统计php源码搭建网站流程
  • 2017如何做企业网站广州网站运营专业乐云seo
  • 分类信息网站开发需求方案免费网上教学平台
  • 衡阳企业网站建设工程合同包括哪些
  • 手机网站制作移动高端网站建设企业邮箱什么格式
  • 公司自己建立网站天津网站建设服务公司
  • 手机网站模板怎么用网站空间购买费用
  • 热门的网站模板下载wordpress 注册图形验证码
  • 山东网站建设流程学生登录注册入口
  • excel可以做网站吗seo方法
  • 优秀网站ui设计桂林微信网站
  • 腾讯云做淘客网站丹东吧
  • 女式包包网站建设定位株洲专业网站建设
  • c 做注册网站乌兰察布市建设局网站
  • 郑州做网站找哪家深圳最大的公司排名
  • 银川网站设计公司佛山网上办事大厅官网
  • app扁平化设计网站模板正品购物网站排行
  • 常州中小企业网站制作wordpress获取用户名密码
  • 昆明网站seo服务wordpress导购页面