ObjectBox[四] 数据库持久化之实体注解
来源:互联网 发布:乌鲁木齐乐知少儿英语 编辑:程序博客网 时间:2024/05/21 19:30
ObjectBox[一] 特性
ObjectBox[二] 教程:如何开始使用ObjectBox
ObjectBox[三] 教程:安装和基础
ObjectBox[四] 数据库持久化之实体注解
ObjectBox[五] 基本操作:查询
ObjectBox[六] 数据监听和RX(Data Observers and Reactive Extensions)
ObjectBox[七] 支持LiveData(Android体系结构组件)
ObjectBox[八] 关系
ObjectBox[九] 数据模型变更
ObjectBox[十] 自定义类型
ObjectBox[十一] 事务
ObjectBox[十二] Meta Model, IDs, and UIDs
ObjectBox[十三] 数据调试
ObjectBox是一个直接保存对象的数据库。为了清晰,我们有时会调用那些可持久化的对象实体。要让ObjectBox知道哪些类是实体,请向其添加注解。然后ObjectBox就可以自动生成持久化需要的代码。
下面是一个例子:
@Entitypublic class User { @Id private long id; private String name; @Transient private int tempUsageCount; // not persisted // getters and setters for id and user ...}
@Entity注解表明User类是一个可以持久化的实体。将触发ObjectBox为此类生成定制的持久化代码。
注意:dumbs class (POJOs :Plain Old Java Objects, 简单洁净Java对象 )(java Bean类)作为实体是一个比较好的做法
注意: 如果您使用Kotlin来定义您的实体类,请查看ObjectBox和Kotlin文档。
对象ID:@Id
在ObjectBox中,每个对象都有一个long
类型的ID 来有效地获取或操作对象。在您的实体的长整型属性上使用 @Id注解 :
@Entitypublic class User { @Id private long id; ...}
对象ID有几点需要注意:
值0(零)和-1(0xFFFFFFFFFFFFFFFF)不能用作ID。
ID为0的对象(如果ID是Long类型,则为 null)被认为是新的。插入这样的对象,数据库会认为是新数据并分配一个新的id。
默认情况下,对象ID由ObjectBox分配。对于每个新的对象,ObjectBox将分配一个未使用的ID,该ID高于当前在Box中使用的最高ID值。例如,如果在一个Box中有两个对象ID 1和ID 100,则存入的下一个对象将被分配ID 101。
如果您尝试使用ID大于当前最高ID的对象,则ObjectBox将引发错误。
如果要自己分配ID,您可以将ID注解更改为
@Id(assignable = true)
。这将允许ID可以有任何值,包括0和-1。
如果您的应用程序中id是其他类型(例如由服务器提供的字符串UID),则可以将它们设置为标准属性(例如String uid),并使用query查询uid来得到实体。
@Entitypublic class User { @Id private long id; @Index private String serverUid; ...}
@Index 表示数据库会建立该属性的索引,当频繁查询该属性时会提高性能。
ObjectBox操作实体数据
ObjectBox需要访问你实体属性的数据(例如在生成的Cursor类中)。你有两个选择:
- 设置属性作用域为 “package private” (不是 “private”) 。在Kotlin中, 你可以使用
@JvmField
。 - 提供标准的 getters。
基本注解
@Entitypublic class User { @NameInDb("USERNAME") private String name; @Transient private int tempUsageCount; ...}
@NameInDb
允许您在数据库级别上为属性自定义一个名称。这允许您重命名Java字段而不影响数据库级别上的属性名称(方便修改类)。 注1:对于重命名,UID是首选。 注2:您目前只能使用内联常量来指定列名。
@Transient
表示该属性不会被持久化。
属性索引
使用@Index
表示数据库会建立该属性的索引,当频繁查询该属性时会提高性能。
@Entitypublic class User { @Id private Long id; @Index private String name;}
关系
可以在对象之间创建一对多和多对多关系,详情请参阅 关系文档。
代码生成
一旦写好你的实体代码,你可以通过编译你的项目来触发代码生成过程。例如 在Android Studio中使用Build> Make project。
如果在更改实体类后遇到错误,请尝试Rebuild项目,以确保清除原有生成的文件。
原文:http://objectbox.io/documentation/entity-annotations/
- ObjectBox[四] 数据库持久化之实体注解
- hibernate注解之实体bean OnetoMany注解(四)
- 注解:Hibernate通过实体类数据持久化
- Android之数据持久化(sqllite数据库)四
- Androidc学习笔记四之数据库持久化操作
- 注解模拟数据库持久化框架
- EJB笔记四 ——持久化实体管理器
- 数据持久化之数据库
- 【SSH进阶之路】【四】hibernate5 实体映射注解配置 【1】注解全面解析
- EJB 3.0持久化规范之实体类的要求
- EJB 3.0持久化规范之实体类的要求
- hibernate教程____hibernate持久化(基于实体类注解和hbm.xml映射文件区别)
- ObjectBox
- 数据持久化(四)之NSUserDefaults
- 数据持久化之四种方式
- EntityManager和持久化实体
- JPA注解持久化
- Spring注解之实体类常用注解
- 算法入门经典第二版 3-9 All in All
- Java的基础回顾-jdk的安装以及环境变量配置
- 数字图像处理matlab版第十一章
- 轻量级接口自动化测试工具
- 浪淘沙
- ObjectBox[四] 数据库持久化之实体注解
- 进程间通信
- OpenGL学习笔记(一):环境搭建、三维空间坐标系理解以及OpenGL的基本使用
- 第6章gp_toolkit管理架构
- NYACM_008
- Elasticsearch索引原理
- 无网络或无线网络情况下本地主机连接虚拟机
- JSP中访问本地图片
- i++与++i