仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 875|回复: 11
打印 上一主题 下一主题

[学习教程] 发布一篇JDO 2.0查询言语的特性及功效

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:28:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
而学习JAVA我觉得最应该避免的就是:只学习,不思考,只记忆,不实践!
查询言语的改善是JDO2.0标准中的主要环节,本文从较高的层面论述JDO2.0所供应的一些新功效。因为JDO2.0标准还未进进公然草案形态,今朝还没有任何内容敲定上去,统统都还大概面对变更。不外,JDO2.0将会很快进进最初阶段,而这里提到的查询特征是JDO2.0专家组(译者注:DavidJordan就是专家组主要成员)消费工夫最多,而且绝对来讲最为不乱。因而,我有充足来由信任,终极标准与这里的形貌将会基础分歧。
假如列位读者以为本文漏掉了某些主要的特征,倡议当即到JDO论坛(http://www.jdocentral.com/forums/index.php?showforum=10)往提出并会商。这里我们必要感激JDO2.0标准向导人CraigRussell受权给我公然这些JDO2.0查询言语的新特征。
查询了局
我们起首从最深切的改善入手下手先容。在JDO1.0中,查询了局老是你所指定的类的实例汇合。思索上面的UML类图,它表达了A、B、C、D四个类及之间的干系:

<br>
你能够创立一个对A类的查询,经由过程contains()援用到B类,再经由过程又一层contains()援用到C类,最初再利用一个“.”操纵符援用到D类。但终极前往的汇合中只会包括A类的对象实例,假如要从了局中取得别的类,就必需经由过程A类的援用来逐一猎取相干的别的类对象。假如你的查询前提内里包括了B、C或D类的束缚,那末在了局会合经由过程A类对象援用别的类对象时,必需从头将这些束缚在Java代码中反复一遍,也就是说,你不能不在Java和JDOQL中反复声明限定前提。再者,你大概只体贴满意查询前提的D类对象,而不但愿两头的B、C类对象被JDO底层创立从而节俭内存或相干资本。
在JDO2.0中,你不再受缚于这些限定了。你能够前往:
数据类(PersistentCapable)的一个或多个字段
候选类之外的别的类对象
统计数据
这意味着你能够前往A、B、C、D类对象,大概它们的某些字段,大概两者的混和了局。你还能够盘算相似min或max之类的统计了局。基础上,你想前往甚么了局都能够。
当你创立一个查询时,你能够指定一个“了局界说(ResultSpecification)”来指定前往甚么样的内容。它是一个包括一个或多个以逗号分开的“了局表达式(ResultExpression)”。了局表达式能够是:
this关头字,暗示前往候选类的对象实例。这与JDO1.0是一样的字段,标明候选类或援用类的某个字段的值,如address.street.name字段表达式,代表对多个字段举行JDO预界说的几种算术运算而取得的了局变量,代表查询前提中呈现的某其中间变量援用表达式,也就是JDO1.0中的经由过程“.”操纵符举行的对象之间的援用统计表达式经由过程对以上这几种了局表达式的组合使用,你能够取得任何你想要的了局。
JDO2.0撑持上面的统计函数:
count(表达式),表达式能够是this
sum(数字型字段表达式),“数字型字段表达式”能够是经由过程字段或字段的运算失掉的数字型的了局
min(数字型字段表达式)
max(数字型字段表达式)
avg(数字型字段表达式)
对查询了局的指定是经由过程上面的API:
voidjavax.jdo.Query.setResult(Stringresult)
假如你不挪用这个办法,大概参数是null,则前往候选类的对象实例(相称于设置为“this”),即JDO1.0的前往了局。假如你只指定了独一了局表达式,则前往汇合的元素范例与该了局的范例分歧。别的,在默许体例下,假如指定了多个了局表达式,则前往的汇合元素范例将是Object[]。
你能够在了局界说字符串的开首标上distinct来包管了局不会反复。而假如了局界说串中包括好几个表达式,那末distinct能够包管了局会合不会有反复的数据组。
每一个了局表达式能够指定一个称号,关于复杂的字段,体系会默许以该字段的称号作为了局中该项的称号。对庞大的表达式,你可使用上面的语法指命名称:
result_expressionasname  
称号的利用可让了局中的该项作为了局类中的一个属性来举行设置和利用。你能够指定一个了局类(resultclass),用来前往查询了局。假如查询了局是一个单值,了局类能够是任何JDO撑持的类(Integer,Double,String,BigInteger,BigDecimal,java.util.Date,java.sql.Date,java.sql.Time,java.sql.Timestamp)。Query中设置了局类的办法是:
voidsetResultClass(ClassresultClass)
假如查询了局包括多个了局表达式,你能够界说一个了局类来保存了局中的各项数据,这个类必需有一个无参数的机关器。别的,每一个了局表达式必需对应此类中的一个属性,不管是一个public的字段,仍是一个public的setXxx()办法,而且这类间接的或bean作风的属性称号与查询了局中各项了局表达式的称号坚持分歧。
<p>
因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。
深爱那片海 该用户已被删除
沙发
发表于 2015-1-21 07:44:03 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
谁可相欹 该用户已被删除
板凳
发表于 2015-1-25 22:21:22 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-4 06:25:09 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
若相依 该用户已被删除
5#
发表于 2015-2-9 17:32:32 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
再现理想 该用户已被删除
6#
发表于 2015-2-10 07:40:18 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
若天明 该用户已被删除
7#
发表于 2015-2-11 16:30:06 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
小魔女 该用户已被删除
8#
发表于 2015-2-25 21:59:03 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
金色的骷髅 该用户已被删除
9#
发表于 2015-3-3 01:39:49 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
不帅 该用户已被删除
10#
发表于 2015-3-11 08:22:44 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
海妖 该用户已被删除
11#
发表于 2015-3-18 00:07:30 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
山那边是海 该用户已被删除
12#
发表于 2015-3-25 07:54:21 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 16:41

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表