kodojdo指南(前两章)

Java数据对象(JDO)的前世今生 1Java与数据库应用,JDBCJava发明以来,在短短的几年之间,迅速占领了从桌面应用(J2SE)到服务器(J2EE),再到小型设备嵌入式系统(J2ME)的应用开发市场,其语言吸取了SmallTalk的一切皆对象的理念,摆脱了C++的历史累赘,简洁、自由的风格赢得了很多开发者的喜爱。从JDK1.1开始,Java成为实用的语言,而不是被人观望的新品秀;再经过JDK1.2的大量增强(尤其是CollectionFramework),JDK1.3的虚拟机效率提升(HotSpot),JDK1.4的融合百家之长(Logging、RegExp、NewIO等),现在已经是成熟稳重,颇显大家风范。在企业级市场 立即下载

 

第一章:
  jdo是sun公司为实现java对象事务数据存储的透明持久性而制定的规范.本文档概述jdo,除非特别声明,否则本文档的说明适用于所有jdo规范的具体实现品.

1.1 读者层次
 本文适合那些想了解jdo并实践应用到日常工作的开发人员,您应对java和面向对象编程概念有较深的了解,并且熟悉XML.而您可以没有数据库编程和持久性数据的处理经验.
 假如你想了解jdo的方方面面,那么你应该忽略本文,直接阅读官方的jdo规范.sun网站提供了它的下载.

1.2 透明持久性
  信息在程序中生成,并且能不依赖程序而存在的数据,称为持久性数据.多数复杂的程序都要使用持久性数据:例如GUI程序需要记住用户参数,WEB程序要跟踪用户在某段时间内的活动和订单等等.
 
  对开发人员而言,只需少量或根本不需做任何工作即可完成持久性数据的存储和读取的特性,就是透明持久性.例如,java的序列化就是透明持久性的一种形式,应用序列化,只需很少的工作就可以把java对象直接存储到某个文件.但是作为透明持久性的实现机制,序列化和jdo所比较起来,黯然失色.下文会把jdo和序列化还有现存的其他实现数据持久性的机制作个对比.

第二章:

什么是JDO?

对开发人员而言,已经有多种可供选择的实现持久性数据存取的技术,例如序列化,JDBC,对象-关系映射工具,对象数据库和EJBs.那么为什么要介绍另外一种框架呢?答案是上述的持久性数据存取技术都有一定程度的缺陷,而JDO努力去克服这些缺陷.下表列出这几种技术的对比.

1. Serialization是java语言的内部实现机制,可把对象转换为一系列字节代码,存到文件或者通过网络传输. 序列化易于使用,但功能非常有限,它对整个对象进行存取,不适合大量数据的处理.当信息更新时,假如发生错误,对象所作的改变并不能撤销.所以它也不适合数据严密集成的应用程序.多线程的程序不能读取相同的序列化数据,否则会发生冲突.并且不能查询.以上种种因素,使得序列化对琐细的持久性需求来说,几乎是无用的.

2.许多开发者使用JDBC在关系数据库操作持久性数据.JDBC克服了序列化的许多缺点.它可以处理大量数据,提供数据集成机制,支持数据并发访问,并且可以用sql语言进行查询.不幸的是,JDBC丧失了序列化的易用性,JDBC使用的关系范例并不是为存储对象而设计的.所以迫使你在考虑数据处理的代码时放弃面向对象编程思想,或者自己寻找一种面向对象的概念映射到数据库中.

3. 一些软件公司制定自己的技术框架,实现对象和关系数据表的映射.这些对象-关系映射产品让你专注于对象模型而不必关注对象和关系范例之间如何转化.然而,这些产品有自身的大量API,你所写的代码时为这个单一的厂商而编写.如果
厂商未能修正产品的bug或者提高价格,当你想使用另一个产品的时候,你不得不重写所有关于持久性数据操作的代码.

4.胜于映射对象到关系数据库的做法,某些软件公司开发了实现对象存取的新数据库.通常,这种对象数据库比对象-关系映射软件要易于使用.对象数据库管理组织(ODMG)打算制定访问对象数据库的标准API,然而很少对象数据库的厂商响应ODMG的建议.因而,厂商依赖性同样存在.很多公司为选择新的对象数据库技术而犹豫,毕竟关系数据库久经考验.对象数据库系统的数据分析工具很少,并且巨量的数据已经存储到老的关系数据库中.因为这些原因,对象数据库并不如它的创造者所期待的那么流行.


5.J2EE介绍了EJBs,实体ejb如同对象-关系映射的解决办法,为持久性数据提供了面向对象的视点.然而,实体bean并不仅限于关系数据库,ejb中提供的持久性信息有可能从EIS而来,或者其他存储设备.而且,ejb使用严格的标准,使数据易于在不同厂商之间传输.然而,ejb提供的面向对象概念实在有限,高级的特性如继承,多态,联合关系都消失了.加之,ejb的编写困难,需要运行在大型昂贵的服务器上.ejb,尤其是会话bean和消息驱动bean,诚然有其他优点.然而,JDO规范详细介绍了如何把这些有点集成到JDO中.


6.JDO结合了以上几种机制所能提供的的最好特性.在JDO里,编写一个可持久化的类就如同写一个可序列化的类那么简单.JDO支持大数据集,数据连贯性,并发性使用和JDBC的查询能力.如同对象-关系软件和对象数据库,JDO允许使用高级的面向对象概念如继承.类似EJB,它通过严格的规范说明,避免了厂商的独享性,也像EJB一样,JDB对后台的数据库没有要求.JDO的实现者可以把对象存储到关系数据库,对象数据库,或者任何支持持久性存储的设备.

注意:默认情况下,KODO JDO 通过JDBC把对象存储到关系数据库.用户可以定制其他数据存储方式.

对许多应用程序而言,JDO并不是完美的.但是它提供了持久性机制的替代品.并且是令人兴奋的替代品.

 

关于 ABAP OPEN SQL 的动态 WHERE 条件和 Dynamic Selections ABAP动态查询技术解析 本文介绍了ABAP中实现灵活数据库查询的动态选择技术,通过FREE_SELECTIONS函数组实现用户自定义查询条件。核心内容包括: 传统固定WHERE条件的局限性,无法满足业务多变需求 Dynamic Selections机制的工作原理,使用FREE_SELECTIONS_INIT初始化、FREE_SELECTIONS_DIALOG交互 完整Demo程序演示如何构建通用表数据浏览器: 用户输入表名后校验权限 调用动态选择函数生成条件 动态拼接WHERE子句执行查询 使用CL_SA 阅读详情

相关推荐

从零构建FOC:手把手教你实现无刷电机磁场定向控制

本文是一份详尽的FOC(磁场定向控制)实战教程,指导开发者从零开始构建无刷电机驱动系统。文章深入解析了FOC的核心算法,包括坐标变换(Clarke/Park)、SVPWM调制和双环PI控制,并对比了有感与无感方案的实现差异。通过分步调试指南,帮助读者亲手实现稳定、高效的无刷电机控制,彻底掌握其底层原理。

h3i4j的博客 514

JDO之前世今生

JDO之前世今生 sun2bin 原创 (参与分:18102,专家分:1020) 发表:2003-10-24 下午1:23 更新:2004-1-1 下午8:26 版本:1.0 阅读:5737次 (本文转自《优快云开发高手》2003第10期) 1Java与数据库应用,JDBCJava发明以来,在短短的几年之间,迅速...

weixin_30532987的博客 179

最新测算源码PHP算命源码-风水八字-八字起名-塔罗牌占卜

未来,随着技术的发展和用户需求的变化,我们可以继续对系统进行升级和优化,以满足更多用户的需求和期望。数据库设计:创建一个名为bazi的数据库表,包含以下字段:id(自增ID)、name(姓名)、sex(性别)、birth_date(出生日期)、birth_time(出生时间)、bazi(八字结果)。数据库设计:创建一个包含塔罗牌信息的数据库表,如tarot_cards,包含字段:id(塔罗牌ID)、name(塔罗牌名称)、meaning(塔罗牌含义)等。根据操作系统的不同,PHP的安装方法会有所不同。

shanbeizi的博客 2418

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

Kodo JDO 规范Kodo JDO包含自己的类来创建数据库模型和增强类。 模型生成工具被用于揣安数据库模型,这个模型将被用于存储JDO对象实例。工具正式支持的数据库包括: DB2 InstantDB SQLServer MySQL Oracle PostgreSQL 其他数据库的JDBC驱动可以通过扩展代码被加入。详细内容参考Kodo JDO的文档。 模型创建工具要依赖于一个package.j

cowboy 1163

C#中的Chart控件——当数据源很多时可以显示进度条拉动观察,也可以记录到后台文本详细对照

C#中的Chart控件——当数据源很多时可以显示进度条拉动观察,也可以记录到后台文本详细对照下面进行详细步骤说明,感兴趣的同学可以看一下: 1简单示例(一条线): 2.数据源随着时间不断变化,进度条变化 。多条线: 3.看在整段时期内的数据大体图(消去或出现)进度条: 4.后台将时刻记录变化记录到一个txt文本里以供详细校验: 话不多说上码: using System; using Sys...

帅boy的博客 4308

算法笔记 经典取石子游戏总结 博弈论

经典取石子游戏总结 1.巴什博弈 有一堆石子共n个,A和B轮流取,A先取。每次最少取1个,最多取m个,先取完者获胜(即没有石子取的人失败)。A与B都足够聪明,问A能否获胜。 结论:当n%(m+1)!=0时A必胜,否则必败。 2.斐波那契博弈 有一堆石子共n个,A和B轮流取,A先取。每次最少取1个。第一次不能取完。从第二次开始,每个人取的石子数至少为1,至多为前一个人取的石子数的2倍。先取完者获胜。...

CraigMC的博客 2936

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

VLP16:使用pointcloud_to_laserscan将三维点云转化为二维LaserScan

velodyne16线激光雷达 VLP16:使用pointcloud_to_laserscan将三维点云转化为二维LaserScan

NEUer_ljx的博客 4619

JDO快速入门

<br />JDO快速入门Java数据对象(Java Data Objects,JDO)是一个应用程序接口(API),它是Java程序员能够间接地访问数据库,也就是说,不需使用直接的结构化查询语言(SQL)语句。JDO是作为Java数据库连接(JDBC)的一个补充来介绍的,而JDBC是一个支持使用SOL语句对流行的数据库程序进行访问的接口。有了 JDO,程序员就可以使用类来定义数据对象,然后支撑程序就会根据类的定义来管理对给定数据库的实际的数据访问了。  <br /><br />      JDO是以Sun

liuzhigang1237的专栏 1万+

Apollo&Carla联合仿真基本操作

基于UE4开发的开源无人驾驶仿真器PythonAPI自动驾驶传感器(还有理想化的collision detection传感器)用于规划和控制的快速仿真地图生成交通场景(open scenario)仿真ROS集成自动驾驶baseline0.9.15新特性新的车型以及地图基于Omniverse的素材导入基于OSM的三维场景生成。

SLAM小土堆 3800

RK3568平台开发系列讲解(项目篇)手写数字识别

📢 本篇章带大家基于飞桨(PaddlePaddle),完成一个简单的手写数字识别任务。

内核笔记 1182

kodojdo指南第十二章

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

WalkingWithJava 1284

基于 ESP32 的智能药盒提醒装置设计与实现

本装置基于 ESP32 实现了智能药盒的核心功能,硬件选型兼顾成本与实用性,软件设计模块化、易拓展。后续可通过 ESP32 的 WiFi 模块接入物联网平台(如阿里云、OneNet),实现远程设置提醒、服药状态反馈等功能,进一步提升智能化水平。该装置能有效解决老人忘服药问题,具有较高的实用价值与推广潜力。

weixin_42300449的博客 1045

kodojdo指南翻译序言

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

WalkingWithJava 1499

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

kodojdo指南十一章

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

WalkingWithJava 1348

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

kodojdo指南第七章

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

WalkingWithJava 1382

STM32F407中文手册

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

kodojdo指南第五章

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

WalkingWithJava 1664

kodojdo指南第九章

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

WalkingWithJava 1509

kodojdo指南第十章

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

WalkingWithJava 1382

kodojdo指南第三章

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

WalkingWithJava 1367

kodojdo指南第四章

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

WalkingWithJava 1564

kodojdo指南第八章

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

WalkingWithJava 1420

kodojdo指南第六章

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

WalkingWithJava 1286

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

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

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值