kodojdo指南十一章

FreeRTOS移植实战:从零开始在STM32上搭建多任务系统(含Proteus仿真配置) 本文详细介绍了如何在STM32平台上从零开始移植FreeRTOS,并搭建多任务系统,包含Proteus仿真配置。通过环境准备、源码移植、多任务设计到仿真调试的全流程实战,帮助开发者快速掌握FreeRTOS在STM32上的应用技巧,提升嵌入式开发效率。 阅读详情

第十一章  查询

  你可以从PersistenceManager中得到查询实例.查询可以筛选符合某些标准的一批候选对象.这个筛选过程可能在数据库中进行,或者在内存中执行.JDO没有明文规定查询机制.许多JDO实现品会根据情况混合使用内存执行方式和数据库执行方式.
  现在开始研究查询接口.你会发现自己对将讨论的东西迷惑不解.这是可预料的.我们会通过一些具体的例子来说明.

11.1 必需的查询元素

  每个查询都有三个必需元素:
  1)候选类.查询的筛选是针对候选类或子类的实例进行的.候选类通过setClass 方法指定.
  2)一批候选类.候选者可以是对象的集合形式或者扩展.这两种情况都可以调用setCandidate 指定候选者.如果给出了扩展,那么不必再个别地指定查询的候选类.查询会自动继承扩展的候选类.(??翻译得不好)
  3)筛选条件.这是用JDO查询语言JDOQL编写并通过setFilter 方法指定的字符串.如果不指定筛选条件,那么查询会返回候选类的所有对象.

11.2 可选的查询元素
  以下是JDO查询的可选元素
  1)Imports.导入通过declareImports 方法指定.根据标准的java导入语法,导入是单一的由";"划分的字符串.在声明参数和变量的时候,使用导入你就不必输入类的全名.
  2)参数声明.参数是筛选字符串里的一个占位符.它允许你写一次查询,然后多次执行.每次都提供新值参数通过.declareParameters 方法指定,这个方法的参数语法和JVA方法的参数声明语法一致.
  3)变量声明.变量用来检测集合里的一些项是否匹配某些条件.通过declareVariables 方法来指定.语法和标准java变量声明语法一致.
  4)排序.有时你希望查询的结果按照指定的顺序返回.例如,你想待售轿车按照价格的升序列出,setOrdering 方法允许你添加查询的排序标准.方法的字符串参数是排序声明根据","分隔的列表.每个声明由字段名加关键字"ascending" 或者"descending"组成.结果会先按第一个(最左边那个)排序声明排序,此后假如有两个记录符合表达式,第二个排序就会执行.以此类推.

11.3 JDOQL

  JDOQL是基于JAVA布尔表达式的数据库无关的查询语言.语法类似JAVA标准语法,只有如下几点例外:
  基本类型和基本类型包装的相等和排序比较是有效的

  日期之间的相等和排序比较是有效的
  
  相等比较通常使用"=="操作符,不支持equals方法.

  不支持.(=, +=, *=, etc) 和 ++ 和 -- 等赋值操作符

  只支持以下方法:Collection.contains ,Collection.isEmpty ,String.startsWith 和String.endsWith

  翻转null值的字段,会抛出NullPointerException,而不是导致子表达式的值为false

  支持以下字面量:字符,整数,浮点数,布尔值,字符串和null
 
(based on 基于 valid 有效的 Equality comparisons 相等比较 Traverse ?? )

  我们会给出一些关于查询接口和JDOQL的例子.该例使用以下的能持久类.

  找出所有price字段值大于10的magazine对象.注意我们可以在筛选字符串中使用候选类的持久化字段.JDOQL 仅仅基于对象模型,而不是数据库所提供的类的具体体现.

  找出title字段以"The"开头的magazine类,以price的升序排序.

 
  找出销售额大于出版商税收的0.01倍的所有magazine.以出版商的revenue 字段的升序和publisher 的name字段的降序排列.注意"."号用法,从publisher中取出revenue和name字段.


  找出所有price 小于等于10出版商是Random House或者Addison Wesley的magazine

  找出这样的magazine:由给出的公司印刷.price大于给出的数目.注意公司名和数字在查询字符串作为占位符体现.在查询没有执行前,不提供值.并且我们使用"导入"导入org.mag.pub包,然后我们可以声明类型是company的参数.我们也可以不使用导入方法,指定类的全名来声明参数.

  找出这样的magazine:封面文章有个"The Real Story"的子标题或者封面文章没有子标题

  找出这样的magazine:有篇文章的标题是"Fourier Transforms",注意变量的用法.代表magezine的文章集合的任一文章.
 
  找出这样的magazine:它的article的title是一批可能的title的其中一个.在这里我们使用集合参数保存所有可能的值,这是sql中in 的用法.

11.4 执行查询

  正如上面显示那样,查询接口有许多执行查询的方法.各个查询方法使用的参数不等.从0个到三个.如果查询超过三个参数,你可以使用executeWithArray 和executeWithMap 方法.详情参看查询接口的javadoc文档
  所有执行方法返回object类型.但事实上它们返回集合.JDO使用object而不是集合的,使厂商可以在某些情况下返回特定的类型,并且允许将来的扩充.

  查询结果会占用数据库资源.所以当查询不再使用的时候最好把它关闭.你可以关闭个别的查询也可以关闭所有已打开的查询.

11.5 查询编译

  查询对象可以通过compile 方法编译.这意味着可以优化已计划的查询.编译期间,所有查询元素都是有效的,任何不一致性都会抛出JDOUserException.
  查询实例也可以序列化.在序列化之后,查询不能被执行.不过它还保留它的候选类,筛选字符串,导入,参数,变量和派讯.一个已序列的查询可以作为相同的配置下创建其他查询的模板.这是通过PersistenceManager的newQuery(Object template)方法来完成
 
 

相关推荐

RK3399跨楼层机器人:SLAM技术与商业应用解析

SLAM(即时定位与地图构建)技术是移动机器人自主导航的核心,通过激光雷达、视觉传感器等多源数据融合实现厘米级定位。RK3399作为高性能嵌入式平台,其六核架构和Mali GPU能高效处理SLAM算法与传感器数据。在商业场景中,这种技术组合可支撑机器人实现跨楼层物资配送、仓库盘点等复杂任务。以SLAMTEC Hermes平台为例,其模块化设计支持电梯控制集成,配合双深度相机和360°激光雷达,在医疗、物流等领域已实现12分钟平均配送效率和99.7%的识别准确率。

weixin_30376083的博客 620

weblogic12c问题

<2019-4-15 下午01时27分03秒 CST> <Critical> <Security> <BEA-090518> <Could not decrypt the username attribute value of {AES}QofyTsFP1vyEM+ksT2S7dmCSWXUmc58EumIK6BTa5Ww= from the...

chundonghan的博客 8157

深入解析UDS 0x19服务:DTC状态掩码与故障诊断实战

本文深入解析了UDS诊断协议中的核心0x19服务(ReadDTCInformation),重点拆解了DTC状态掩码(DTCStatusMask)的八个状态位及其在故障生命周期中的联动逻辑。通过实战案例,详细说明了从故障发生、确认到清除的全过程,并介绍了如何利用该服务进行深度诊断,包括读取扩展数据(如冻结帧)和避免常见开发误区,是理解汽车ECU故障管理机制的关键。

weixin_29248313的博客 323

kodojdo指南第十二章

第十二章  结论  本教程对JDO的规范作了个大略的介绍.Kodo JDO 指南会通过step-by-step的建立JDO应用程序来继续你的JDO学习.最后,Kodo JDO 参考指南包含所有SolarMetric Kodo JDO实现细节和开发工具.

WalkingWithJava 1284

Penpot自托管全攻略:5分钟搞定私有化部署(附Docker配置详解)

本文详细介绍了Penpot开源原型设计工具的私有化部署全流程,从Docker基础配置到企业级优化方案。通过分步指南和实战技巧,帮助设计团队快速搭建安全高效的自托管环境,实现数据自主可控。内容涵盖LDAP集成、性能监控、备份策略等关键企业需求,是Penpot私有化部署的完整参考手册。

sugar的博客 1133

了解你的GPU:深入探讨AMD SMI

2024年9月17日 作者:Matt Elliott对于使用AMD硬件的系统管理员和高级用户来说,性能优化和高效的资源监控至关重要。AMD系统管理界面命令行工具`amd-smi`正是为了解决这些需求而设计的。amd-smi是一个多功能的命令行工具,专门用于管理和监控AMD硬件,主要侧重于GPU。作为未来取代`rocm-smi`的工具,`amd-smi`有望成为跨广泛设备的AMD硬件管理的主要工具。

数字人生 4523

kodojdo指南翻译序言

        因为工作的原因,我接触到jdo.当时对这个新奇的东西很感兴趣,于是在熟悉kodo的同时,把附带的jdo指南粗略翻译了一遍.        这篇翻译并不是什么权威之作.相反可以说相当不成熟.毕竟我不是专业翻译者,而本来的目的也只是通过翻译掌握知识.如果你决定学jdo,我建议你边看这篇翻译边对照英文教程.毕竟我连很多图都没贴上来.        别怪我责任心不够.因为jdo的掌握实在不

WalkingWithJava 1499

在Proteus中用80C51模拟4线SPI点亮OLED屏幕

在Proteus里用80C51模拟4线SPI控制OLED屏幕使其显示图案(汇编实现)。

Connor3093的博客 5003

kodojdo指南第七章

第七章 PersistenceManagerFactoryPersistenceManagerFactory 创建PersistenceManager实例以供应用程序使用.它允许你配置数据连接方式和指定所创建的PersistenceManager的默认设置.你也可以通过它在编程中获知你当前厂商支持的JDO选项.使你能使用产品的全部特性来最优化你的程序.7.1. 获得Persiste

WalkingWithJava 1382

RT-Thread Studio 使用笔记(七)| 配合STM32CubeMX添加裸机驱动(以ADC为例)

1. 配置STM32CubeMX 2. 复制stm32xxxx_hal_msp.c文件 将 CubeMx 生成的代码 stm32f7xx_hal_msp.c 函数复制到 RT-Thread Studio 生成的工程中,并参与工程编译: 由于我们并没有使用 CubeMx 生成的工程,所以这里需要将 stm32f7xx_hal_msp.c 文件中 #include “main.h” 替换为 #i...

Mculover666的博客(嵌入式) 9626

华为OD新系统机试真题-勇攀数字高峰(Java/Py/C/C++/Js/Go)

新系统 华为OD机试新系统【勇登数字高峰】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD新系统机试真题【勇登数字高峰】

qq_45776114的博客 1546

kodojdo指南第五章

第五章 JDO元数据JDO要求每个持久类都必须有元数据.元数据有三个基本作用:1)标识持久类2)重载默认JDO行为3)告诉JDO持久类的内省信息  元数据是一个XML文档,下节会讨论它的DTD.无须强求自己立即明白DTD,下节我们会全面介绍它.  JDO元素是元数据文档的根元素.它只有一个子元素.package.每个package元素都必须用包的全称来指定名字属性  package

WalkingWithJava 1664

如何跑通SuperPoint+LightGlue的训练代码使用gluefactory进行训练和评估?

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 1786

kodojdo指南第十章

第十章 扩展  扩展是给定的能持久类的所有持久化实例的逻辑视图.扩展可以从PersistenceManager中得到,通常要来指定查询的候选对象.  getCandidateClass 方法返回扩展实例的能持久类.hasSubclasses 指出是否包括子类实例    你可以使用iterator 方法得到一个扩展的含有所有对象的枚举器.使用它通常会消耗数据库资源,所以当你使用完毕之后,

WalkingWithJava 1382

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

kodojdo指南第三章

第三章:JDO技术框架下图描述了JDO框架各基本组件之间的关系。JDOHelper.javax.jdo.JDOHelper包含了一些静态的辅助方法。这些方法用于查询持久性对象的生存期和以厂商无关的方式创建PersistenceManagerFactory的实例。PersistenceManagerFactory .javax.jdo.PersistenceManagerFactory是

WalkingWithJava 1367

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

kodojdo指南第八章

第八章 PersistenceManager  上图概括了PersistenceManager 接口最常用的方法和属性。参考Javadoc了解更完整的信息。类JAVA BEAN风格的getter和setter方法在字段声明时给出。入参为....的方法表示重载函数。  PersistenceManager 是应用程序和JDO运行时结合的主要接口。每个PersistenceManager 管理

WalkingWithJava 1420

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

kodojdo指南第九章

第九章  事务  事务用来保证事务完整性.它把操作集中到一个工作组,这个组里的操作要么全部成功,要么全部失败.事务有几个特性  1)原子性:原子性指事务的要么全部成功-要么全部失败的属性.要么事务中的每个更新数据的操作都成功完成,要么全部失败.而不管数据在数据库中的原始状态是怎样.事务不可能部分地成功.  2)一致性.每个事务使数据库的数据从一种连贯状态到另一种连贯状态.  3)隔离性

WalkingWithJava 1509

kodojdo指南第四章

第四章 PersistenceCapable  在JDO里,所有自定义的持久类都必须实现javax.jdo.spi.PersistenceCapable接口.这个接口包含了一些复杂的方法,使JDO能够管理类实例的持久性字段.幸运的是,你不必亲自实现这个接口,实际上,编写一个持久类和编写普通的类没有分别.没有特别的类需要继承,不必使用特殊的字段类型,不必写特殊的方法.这也是JDO使持久性对开发者

WalkingWithJava 1564

kodojdo指南第六章

 第六章 JDOHelper  上图列出了JDOHelper最常用的方法。详细的API信息请参考类的Javadoc文档  应用程序使用JDOHelper进行三类操作:能持久化操作,生存期操作和创建PersistenceManagerFactory 。我们逐一研究。6.1 能持久化操作    前两个操作makeDirty和getObjectId我们已经见过。假设一个能持久化对象和字段名被

WalkingWithJava 1286

kodojdo指南(前两章)

 第一章:  jdo是sun公司为实现java对象事务数据存储的透明持久性而制定的规范.本文档概述jdo,除非特别声明,否则本文档的说明适用于所有jdo规范的具体实现品.1.1 读者层次 本文适合那些想了解jdo并实践应用到日常工作的开发人员,您应对java和面向对象编程概念有较深的了解,并且熟悉XML.而您可以没有数据库编程和持久性数据的处理经验. 假如你想了解jdo的方方面面,那么你应

WalkingWithJava 1537

Java 数据对象(JDO)介绍(四)

模型创建工具要依赖于一个package.jdo文件,这个文件被用于定义JDO实例类的一些细节。下面的文件被用于这个例子。可以查看KodoJDO的文档来获得文件格式和概念的详细信息。全文阅读:http://www.javah.net/JDBC_JDO/20070525/1936.html

zaowei21的专栏 601

[转载]如何用JDO开发数据库应用(1)

如何用JDO开发数据库应用(1)本文将介绍如何使用Sun公司的最新《Java Data Objects 》规范来进行基于数据库的简单应用程序的开发,从而使读者对JDO有一个直接的感性的认识,为更深入的开发作铺垫,同时也希望抛砖...

congji3817的博客 212

BEA Systems收编SolarMetric

作者:Charles Huang今天J2EE业界最大的新闻就是Bea收购开发KODO JDO/EJB3持久化产品的SolarMetric公司了。看到这个消息,第一个直觉就是这是Bea所能做得最自然的一个选择。这也意味着EJB3的时代到了。J2EE从1.4跨越到5是一个巨大的转变。从笨重的EJB2模型转向IOC/POJO模型的EJB3是一个巨大的转变,完全可以说是EJB技术的 一次涅盘和重生

714

Java 数据对象(JDO)介绍

 Java 数据对象(JDO)介绍byJeff Brown, Senior Software Engineer Object Computing, Inc. (OCI) 介绍Java 数据对象 (JDO) is 是一个存储Java对象的规范.   它已经被JCP组织定义成JSR12规范。JDO的第一个版本在2000年6月6日提交并在2002年4月30日正式发布1.0版本规范

1714

第15章 Spring对各种ORM的集成(三)

第15章 Spring对各种ORM的集成(三) 15.3 Spring中对其他ORM方案的集成概述 不管是从对各种ORM产品的集成理论以及集成方式上看,还是从对各种ORM产品集成关注点来看,Spring对各种ORM产品的集成几乎是一脉相承的。 所以,对于Spring中其他几种ORM产品的集成情况,没有必要再重复几乎一样的理论和方式,因此以下内容仅作提点,不着更多笔墨。 回顾Spring对各种数据访问技术的集成,我们可以归纳出如下几点。 1. 集成理论和方式上 各种数据访问方式的管理和使用通过相应的模板方法类

hello world 11万+

一个JDO的成功案例分析

一个JDO的成功案例分析来源:JDOCentral.com上的链接:"A Case Study: Replacing the Persistence Layer of a Business Process Engine with JDO"该PDF文档描述了美国麻省的一个软件应用公司在使用JDO前后的应用开发情况,最初他们是自己开发的一套比

sun2bin的专栏 2842
上一篇: kodojdo指南第十章
下一篇: kodojdo指南第十二章
云哥
博客等级 码龄22年 2粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值